STL-容器共通操作
2016-06-15 本文已影响72人
b64c74899092
STL-容器共通操作
以下操作为STL所有容器共有
初始化
每个容器类都提供了一个default构造函数,一个copy构造函数和一个析构函数
产生一个空容器
ContType c
产生一个同类型容器
ContType c1(c2)
复制[begin,end]区间内的元素,作为容器初始值
ContType c(begin,end)
删除所有元素,释放内存
c.~ContType()
与大小相关的操作函数
所有容器都提供了三个和大小相关的操作函数
返回当前容器的元素数量
size()
判断是否是空容器(和size()==0效果一样)
empty()
返回容器所能容纳的最大元素数量
max_size()
比较
包括常用的比较操作符==,!=,<,<=,>,>=
比较操作有一下要求:
- 比较操作的两个容器必须属于同一类型
- 如果两个容器所有元素依次相等,那么这两个容器相等
- 采用字典式顺序比较原则来判断摸个容器是否小于另一个容器
- 比较不同类型的容器需要使用“比较”算法
赋值和swap()
对容器赋值时,源容器所有元素要拷贝到目标容器中,目标容器中原来的元素都被移除,所以赋值的代价比较大,而且赋值后会导致指向左边容器内部的迭代器、引用、指针失效(string,array除外)
如果两个容器的类型相同,而且拷贝后源容器不再被使用,可以使用swap(),它只交换容器的内部数据,事实上只交换某些内部指针,所以时间复杂度是常数,而赋值是线性,同时也不会使容器内部的指针、迭代器、引用失效(string,array除外)
c2赋值给c1
c1=c2
交换c1,c2
c1.swap(c2)
swap(c1,c2)
迭代器和其他
返回指向第一个元素的迭代器
c.begin()
返回指向最后一个元素的迭代器
c.end()
返回一个逆向迭代器,指向逆向遍历时第一个元素
c.rbegin()
返回一个逆向迭代器,指向逆向遍历时最后一个元素
c.rend()
将elem插入到pos处
c.insert(pos,elem)
删除[beg,end]之间所有元素
c.erase(beg,end)
删除所有元素,容器为空
c.clear()
返回容器的内存分配器
c.get_allocator()