• vector和bitset使用例子


    vector是一个容器,可以看做是一个大小可变化的数组,所以其特性有:

    1)大小可变

    2)容器内的数据成员只允许是一种;

    3)由于vector提供的接口的特性,他可以当做栈来使用

    bitset则是用来方便实现二进制的位操作而设计的库,比较简单。

    代码示例如下:

    // Vector.cpp : 定义控制台应用程序的入口点。
    //vector的使用实例
    
    #include "stdafx.h"
    #include <iostream>
    #include <vector>
    #include <ctime>
    #include <bitset>
    using namespace std;
    
    int main(int argc, _TCHAR* argv[])
    {
    	srand(clock());
    	
    	//声明变量
    	//sizeof(rand_number)是固定的,不随其元素个数变化
    	vector<int> rand_number;
    
    	//产生10个随机数
    	cout << "产生10个100以内的随机数:" << endl;
    	for( int i=0; i<10; i++ )
    		rand_number.push_back(rand()%100);
    	//输出结果,采用下标索引的方式访问,但是可以通过索引来增加元素
    	for( vector<int>::size_type i=0; i<rand_number.size(); i++ )
    		cout << rand_number[i] << "  ";
    	cout << endl;
    	//通过下标索引可以修改vector内的元素
    
    	//修改元素内容
    	cout << "把首元素改成-1后的结果:" << endl;
    	if( !rand_number.empty() ) rand_number[0] = -1;
    	//输出通过下标索引修改后的结果
    	for( vector<int>::size_type i=0; i<rand_number.size(); i++ )
    		cout << rand_number[i] << "  ";
    	cout << endl;
    
    	//删除后面的元素
    	cout << "删除后面的元素,使得vector内的元素不大于5个:" << endl;
    	while(rand_number.size() > 5)
    	{
    		rand_number.pop_back();//把最后的元素移除
    	}
    	//输出删除元素后的结果,通过迭代器输出结果
    	//end返回的是vector的最末端的下一个元素,指向一个不存在的元素
    	for( vector<int>::iterator i=rand_number.begin(); i!=rand_number.end(); i++ )
    		cout << *i << "  "; //通过*(解引用操作符,像C语言中的间访)来读取元素值
    	cout << endl;
    
    	//通过迭代器修改元素值,定义的const_iterator只支持访问,不允许修改
    	cout << "迭代器修改元素值:" << endl;
    	*rand_number.begin() = 101;//修改首元素
    	vector<int>::iterator e = --rand_number.end();
    	*e = 110;//修改最好一个元素
    	for( vector<int>::iterator i=rand_number.begin(); i!=rand_number.end(); i++ )
    		cout << *i << "  ";
    	cout << endl;
    
    	//bitset的使用
    	bitset<15> bit;
    	cout << "默认的bitset值:" << endl;
    	//默认初始化都为0,可以分别使用unsigned和string初始化
    	cout << bit << endl;
    	//计算bit中1的个数
    	cout << "bit中1的个数为:" << bit.count() << endl;
    	//都置为1
    	bit.set();
    	cout << "置1后,bit中1的个数为:" << bit.count() << endl;
    	//都置为0
    	bit.reset();
    	cout << "置0后,bit中1的个数为:" << bit.count() << endl;
    	//将bit的每一位都置反
    	bit.flip();
    	cout << "置反后,bit中1的个数为:" << bit.count() << endl;
    
    	
    	getchar();
    	return 0;
    }
    

    运行结果:


  • 相关阅读:
    .NET框架程序设计三个概念:.NET,.NET平台(PlatForm),.NET框架(Framework)
    解决AVI格式的文件不能删除的问题
    加载项目失败的解决办法
    由Codebehind所引发的
    由Duwamish学习web.config的配置
    JDK、JRE、JVM之间的关系
    hadoop等的下载地址
    eclipse代码自动补全
    UML 类图中的几种关系
    fedora 14 的163的yum源
  • 原文地址:https://www.cnblogs.com/arbboter/p/4225221.html
Copyright © 2020-2023  润新知