STL-容器共通操作

作者: b64c74899092 | 来源:发表于2016-06-15 23:14 被阅读72次

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()

相关文章

网友评论

    本文标题:STL-容器共通操作

    本文链接:https://www.haomeiwen.com/subject/rwcmdttx.html