关于标准模版库中的容器,现从书中录入如下,以便共享:
比较部分 |
vector |
deque |
list |
在尾部插入或删除元素 |
O(1) |
O(1) |
O(1) |
在头部插入或删除元素 |
O(N) |
O(1) |
O(1) |
在中间插入或删除元素 |
O(N) |
O(N) |
O(1) |
内存分配 |
很少,仅增大 |
有周期性 |
每次的插入和删除操作 |
遍历性能 |
如数组 |
与vector几乎一样 |
比vector慢的多 |
是否支持连续的内存访问 |
是 |
一些连续内存块 |
否 |
iterator有效性检查 |
在插入或删除后 |
同前 |
不做 |
内存开销 |
12-16字节 |
头部>16字节,初始内存可达4KB |
8-12字节头部信息,8-12字节每结点信息 |
比较部分 | set 和 multiset | map和multimap | 哈希类容器 |
插入或删除元素 | O(ln N) | O(ln N) | O(1)- O(N) |
查找元素 | O(ln N) | O(ln N) | O(1)-O(N) |
内存分配 | 每次的插入和删除操作 | 每次的插入和删除操作 | 同前 |
遍历性能 | 比list稍慢点 | 同前 | 同前 |
是否支持连续的内存访问 | 否 | 否 | 否 |
iterator有效性检查 | 不做 | 不做 | 不做 |
内存开销 | 8-12字节头部,8-12字节结点 | 同前 | 取决与具体实现(8-16字节) |
出处:《C++游戏编程》清华大学出版社