C++STL里面7个常用容器的比较
2017-03-23 14:18
225 查看
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.容器比较
3.各容器特点比较以及选择
4.各容器的图表说明
4.1 vector
4.2 deque
4.3 list
4.4 map/multimap
4.5 set/multiset
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.1 vector
4.2 deque
4.3 list
4.4 map/multimap
4.5 set/multiset
相关文章推荐
- STL基础4:STL7个常用容器的比较
- STL基础4:STL7个常用容器的比较
- STL基础4:STL7个常用容器的比较
- STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。
- c++的STL模板库中3种容器类:vector,list,deque的比较
- C++中STL常用容器的优点和缺点
- c++ stl容器的一些比较
- C++ STL set集合容器常用用法
- C++中STL常用容器的区别
- C++STL库中map容器常用应用
- 从零开始学C++之STL(三):迭代器类vector::iterator 和 vector::reverse_iterator 的实现、迭代器类型、常用的容器成员
- C++ STL基本容器比较
- C++ STL中的常用容器浅谈
- C++ STL基本容器比较
- C++ STL基本容器比较
- C++ STL 里面在容器的使用基础
- C++ STL基本容器比较
- C++中STL常用容器的优点和缺点
- c++ 提高4 map容器 共性机制 使用时机 比较| STL算法 算法基础仿函数 谓词 函数适配器 遍历算法
- 【C++】STL常用容器总结之二:顺序容器