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;
}
運行結果: