C++必杀技算法之路helloworld被隐藏了的过程

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()
上一篇下一篇

猜你喜欢

热点阅读