C++容器汇编
容器汇编1 比较简单的若干容器
1. string
begin 可以得到对象起始点
end 可以得到对象的结束点
empty 可以得到容器是否为空
size 可以得到容器的大小
swap 可以和另外一个容器交换其内容
2. vector
可以使用中括号的下标来访问其成员(同 string)
可以使用 data 来获得指向其内容的裸指针(同 string)
可以使用 capacity 来获得当前分配的存储空间的大小,以元素数量计(同 string)
可以使用 reserve 来改变所需的存储空间的大小,成功后 capacity() 会改变(同 string)
可以使用 resize 来改变其大小,成功后 size() 会改变(同 string)
可以使用 pop_back 来删除最后一个元素(同 string)
可以使用 push_back 在尾部插入一个元素(同 string)
可以使用 insert 在指定位置前插入一个元素(同 string)
可以使用 erase 在指定位置删除一个元素(同 string)
可以使用 emplace 在指定位置构造一个元素
可以使用 emplace_back 在尾部新构造一个元素
3.deque
双端队列,相较于vector,不仅能在前部插入和删除元素,也可以在尾部插入和删除元素。
deque 的接口和 vector 相比,有如下的区别:
deque 提供 push_front、emplace_front 和 pop_front 成员函数。
deque 不提供 data、capacity 和 reserve 成员函数。
4.list
双向链表
和 vector 相比,它优化了在容器中间的插入和删除:
list 提供高效的、O(1) 复杂度的任意位置的插入和删除操作。
list 不提供使用下标访问其元素。
list 提供 push_front、emplace_front 和 pop_front 成员函数(和 deque 相同)。
list 不提供 data、capacity 和 reserve 成员函数(和 deque 相同)。
5.容器适配器1-queue
一种队列,先进先出的数据结构
queue 缺省用 deque 来实现。它的接口跟 deque 比,有如下改变:
不能按下标访问元素没有 begin、end 成员函数
用 emplace 替代了 emplace_back,
用 push 替代了 push_back,
用 pop 替代了 pop_front;没有其他的 push_…、pop_…、emplace…、insert、erase 函数
6.容器适配器2-stack
stack缺省也是使用deque实现,是一种后进先出的数据结构
它的接口跟 vector 比,有如下改变:
不能按下标访问元素没有 begin、end 成员函数
back 成了 top,没有 front用
emplace 替代了 emplace_back,
用 push 替代了 push_back,
用 pop 替代了 pop_back;没有其他的 push_…、pop_…、emplace…、insert、erase 函数
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
容器汇编2-需要函数对象的容器
1.容器适配器3 priority_queue
按照优先级对数据成员进行排序,提供了如下的几种方法:
empty()
size()
front()
push_back()
pop_back()
2.关联容器map multimap set multiset
与序列容器相比,关联容器没有前、后的概念及相关的成员函数,但同样提供 insert、emplace 等成员函数。
此外,关联容器都有 find、lower_bound、upper_bound 等查找函数,结果是一个迭代器:
find(k) 可以找到任何一个等价于查找键 k 的元素(!(x < k || k < x))
lower_bound(k) 找到第一个不小于查找键 k 的元素(!(x < k))
upper_bound(k) 找到第一个大于查找键 k 的元素(k < x)
3.无序关联容器unordered_set unordered_multiset unordered_map unordered_multimap
与关联容器相比,无需关联容器没有顺序,不需要提供一个排序函数,但是需要提供一个计算hash值的函数
其插入删除查找性能都是O(1)