一、#include <vector>
vector是类模板,同一种类型的对象的集合,vector<类型> 变量名,由于vector的动态增长的效率比较高,比较好的方案是先初始化一个空的vector对象,然后动态增加元素。
是一种顺序存储容器
vector常用操作
1.size() 返回类型是size_type
2.push_back()追加
3.vector的下标操作[],vector中的对象是没有名字的。vector的下标操作只能用来获取已存在的元素,因此通过下标增加新元素的时候,不会添加任何元素。
二、迭代器
迭代器是一种检查容器内元素并遍历元素的数据类型。
每种容器都有自己的迭代器类型。eg: vector<int> ivec; vector<int>::iterator iter=ivec.begin();
2.1begin和end操作,用于返回迭代器
begin()返回的迭代器指向第一个元素,end返回的迭代器指向末端元素的下一个元素,成为超出末端迭代器,指向一个不存在的元素。当容器为空的时候,两者返回的迭代器相同。
2.2迭代器可以自增和解引用运算
++iter; *iter=0;
2.3使用迭代器进行遍历操作
for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter){...}
2.4一种特殊的迭代器,只能用于读取容器内的元素
const_iterator,对该类型迭代器进行解引用的时候,不能进行对象修改操作。
2.5迭代器的算术操作
可以加上或减去一个整型值,产生一个新的迭代器。这个整型值应该是size_type类型或者difference_type类型的。
两个迭代器可以做减法,得到一个difference_type的signed值。表示两个迭代器的相距距离,这两个迭代器必须指向同一个容器。
注意:两个迭代器相加的操作是未定义的
三、标准库bitset类型
#include <bitset>
using std::bitset
bitset是一种类模板,构造的时候需要指定其长度值。 eg:bitset<32> bitvec;长度值必须定义为整型字面值常量或者已用常量值初始化的整型的const对象。
几种初始化bitset的方法
1.用unsigned 值初始化bitset对象。该值将转化为二进制的位模式。分清低阶位和高阶位。
2.用string对象初始化bitset对象。从string对象读入位集的顺序是从右向左。
相对于C++内置数据类型的数组和指针而言,程序员应优先使用标准库类类型。