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; }
运行结果: