STL基础4:STL7个常用容器的比较
2017-09-11 15:33
218 查看
STL基础4:STL7个常用容器的比较
1.STL容器分类:STL的容器可以分为以下几个大类:
一 顺序(序列)容器, 有vector, list, deque, string,stack( 适配器类), queue( 适配器类), priority queues( 适配器类)
二 关联容器, 有set, multiset, map, multimap, bitset,hash_set, hash_map, hash_multiset, hash_multimap
2.容器比较
vector | deque | list | set | multiset | map | multimap | |
名称 | 向量容器 | 双向队列容器 | 列表容器 | 集合 | 多重集合 | 映射 | 多重映射 |
内部数 据结构 | 连续存储的数组形式(一端开口的组) | 连续或分段连续存储数组(两端 开口的数组) | 双向环状链表 | 红黑树(平衡检索二叉树) | 红黑树 | 红黑树 | 红黑树 |
| |||||||
头文件 | #include <vector> | #include <deque> | #include <list> | #include <set> | #include <set> | #include <map> | #include <map> |
操作元素的方式 | 下标运算符:[0](可以用迭代器,但插入删除操作时会失效) | 下标运算符或迭代器 | 只能用迭代器(不断用变量值来递推新值,相当于指针),不支持使用下标运算符 | 迭代器 | 迭代器 | 迭代器 | 迭代器 |
插入删除操作迭代器是否失效 | 插入和删除元素都会使迭代器失效 | 插入任何元素都会使迭代器失效。删除头和尾元素,指向被删除节点迭代器失效,而删除中间元素会使所有迭代器失效 | 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 | 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 | 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 | 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 | 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 |
vector | deque | list | set | multiset | map | multimap | |
名称 | 向量容器 | 双向队列容器 | 列表容器 | 集合 | 多重集合 | 映射 | 多重映射 |
特点 | 增加和获取元素效率 很高,插入和删除的 效率很低 | 增加和获取元素效率 较高,插入和删除的 效率较高 | 增加和获取元素效率 很低,插入和删除的 效率很高 | 1.键(关键字)和值(数据)相等(就是模版只有一个参数,键和值合起来) 2.键唯一 3.元素默认按升序排列 | 1.键和值相等 2.键可以不唯一 3.元素默认按升序排列 | 1.键和值分开(模版有两个参数,前面是键后面是值) 2.键唯一 3.元素默认按键的升序排列 | 1.键和值分开 2.键可以不唯一 3.元素默认按键的升序排列 |
定义容器 | vector<string> book(50); | deque<string> book(50); | list<string> book; | set<string> book; | multiset<string> book; | map<int,string> book; | multimap<int,string> book; |
4.各容器的图表说明
4.1 vector
4.2 deque
4.3 list
4.4 map/multimap
4.5 set/multiset
转载自:http://blog.csdn.net/longhuahaha/article/details/8365041
相关文章推荐
- STL基础4:STL7个常用容器的比较
- STL基础4:STL7个常用容器的比较
- C++STL里面7个常用容器的比较
- 20170608_STL 中vector 容器的一些常用函数,vector和数组的比较
- STL中几种常用容器比较
- STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。
- STL — 7个常用容器的区别
- STL常用容器比较
- c++ 提高4 map容器 共性机制 使用时机 比较| STL算法 算法基础仿函数 谓词 函数适配器 遍历算法
- STL常用容器详细解析
- STL常用容器用法之——queue和priority_queue
- STL常用容器用法
- STL常用容器成员函数列表
- STL-容器的比较与操作
- STL常用容器和算法1
- 常用STL容器及算法举例
- 常用STL容器及算法举例
- stl中各种容器的自定义比较函数
- Flutter基础—常用控件之容器
- 【STL】常用容器的方法