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