vector
- 概述: 连续数组, malloc开辟内存空间
- 迭代器: 是一个对象指针
- 内存管理:
当添加新元素时, 内存不够触发内存重置操作, g++ 1.5倍, vs 2倍;
删除元素时, 不会自动缩小空间;
list
- 概述: 双向链表
- 迭代器:
- 内存管理:
deque
- 概述: 分段连续, 用一个map管理
- 迭代器: 管理段内first, last, cur指针, 已经指向map
- 内存管理:
在头部或者尾部最后会有一个备用空间, 添加元素没有备用空间时触发开辟新段;
删除时, 元素会移动,段内没有元素时会释放掉内存空间;
set
- 概述: 底层是RB树
- 迭代器: 调用RB树的const迭代器
- 内存管理: 与list类似
muitiset
- 概述:与set相同, 唯一的差别在于它语序键值重复, 因此他的插入操作采用的是底层机制RB-tree的insert_equal()而非insert_unique();
- 迭代器:
- 内存管理:
hash_set
- 概述:
- 迭代器:
- 内存管理:
hash_multiset
- 概述:
- 迭代器:
- 内存管理:
map
- 概述: 节点存放pair的RB树
- 迭代器: 调用RB树的迭代器
- 内存管理:
multimap
- 概述:与set相同, 唯一的差别在于它语序键值重复, 因此他的插入操作采用的是底层机制RB-tree的insert_equal()而非insert_unique();
- 迭代器:
- 内存管理:
hash_map
- 概述:
- 迭代器:
- 内存管理:
hash_multimap
- 概述:
- 迭代器:
- 内存管理:
网友评论