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;
}

运行结果:


原文地址:https://www.cnblogs.com/arbboter/p/4225221.html