c++ list, vector,deque, map,set区别与用法比较
1 vector:[pos]侧重于随机访问速度
2 list: 侧重于增加删除数据的速度,对数据中间的增删操作比较多,可排序
3 deque:[pos]分段连续内存,即需要前后增删数据的能力,又要良好的数据访问速度
4 set: 二叉树,自定义排序,find查找速度
5 map: [key]二叉树,自定义排序,find查找速度,键值对
List封装了链表,链表形式实现, 不支持[]
插入删除就快的多了,不需要拷贝和移动数据,只需要改变指针的指向就可以了。
Vector封装了数组,连续内存存储的,支持[]。
随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。
Deque融合了list和vector的优点:随机访问与头尾删除插入效率都很高,但是在中间操作的效率很低.
Queue 是受限制的deque,内部容器一般使用list较简单。先进先出,不允许遍历
Map,Set属于标准关联容器,使用了非常高效的平衡检索二叉树:红黑树,他的插入删除效率比其他序列容器高是因为不需要做内存拷贝和内存移动,而直接替换指向节点的指针即可。