关于标准模版库中的容器,现从书中录入如下,以便共享:
比较部分 | 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++游戏编程》清华大学出版社