首页 > 代码库 > STL中各容器之函数总结
STL中各容器之函数总结
一.序列和关联非共有函数
所有标准库共有函数 (构造,相关属性,迭代器,插入与删除,比较,swap)
其中operator>,operator>=,operator<,operator<=,operator==,operator!=均不适用于priority_queue
顺序容器和关联容器共有函数
(1) 序列容器都提供5种相同的构造方法;关联容器都提供3种相同的构造方法
(2) 还有insert插入函数(序列容器有3个相同版本的插入。关联容器也有3个版本的)
(3) 序列容器提供2中相同的erase,关联容器提供3种相同的erase。
(4) 属性函数:除vector多了capacity()函数,其余都是size,max_size,empty这3
二.非共有函数
(1)只有序列容器才有的函数
元素的访问 ; 元素的赋值
(2) 只有关联容器才有的函数
查找
(3) 序列元素对首尾元素的插入,删除与访问
Vector
插入与删除:push_back(),pop_back()
访问:front,back(分别均有2个版本)
重要:为什么没有push_front,,但是却有front,这是start迭代器的功劳
Deque,list
插入与删除:push_back(),pop_back(),push_front,pop_front
访问:同vector
Stack,queue
插入与删除很明显
访问:queqe同vector。但是stack却只有top(也即back),为什么?
Slist
插入与删除:push_front与pop_front
访问:front
(4) 只有序列容器才有的访问之非头尾的访问
只有Vector与deque才可以,因为只有他们才提供了随机访问迭代器
1.[] (2种版本)
2.at(2种版本)
(5)只有序列容器才有的赋值
都一样;assign(2个版本)
(6)
Vector和string既有reserve,也有resize,它们两个可以利用reserve来避免不必要的重新分配。
由于deque没必要提供所谓的空间保留功能(原因见STL源码P143),所以其没有reserve函数。同理,List也只提供resize函数
关联容器不提供这两个函数。
(7)list在序列容器中比较特殊
合并:merge(2个版本),splice(3个版本)
排序:sort(2个版本)
反转
多了删除:remove(2个版本),unique(2个版本)
(8)关联容器特有的查找
Set与multiset:find,lower_bound,upper_bound,equal_range,count,
Map与multimap:前4个函数还有一个非const版本
(9)
Vector和string既有reserve,也有resize,它们两个可以利用reserve来避免不必要的重新分配。
由于deque没必要提供所谓的空间保留功能(原因见STL源码P143),所以其没有reserve函数。同理,List也只提供resize函数
关联容器不提供这两个函数。