我是
靠谱客的博主
优秀画板,这篇文章主要介绍
c++ STL 容器之 map,现在分享给大家,希望可以做个参考。
这篇文章主要对比map, multimap, unordered map和unordered multimap.
当我们发现某两个数据之间成对存在,并彼此关联,就可以用map这种容器来存放这对数据,根据是否需要元素有序,和key值是否可以重复来选择不同的容器。
如果需要储存的元素是有序的,就要选择map,如果不需要元素有序,就可以选择onordered_map。 使用map的时候,通过key值访问元素会比使用unordered_map要慢。
Map:
1. Map中的元素通过键值对组织在一起,也就是说可以通过key来找到与其对应的元素。
2. Map中的元素要按照一定的顺序排列起来,即便是新插入的元素,也要根据这个顺序给它合适的位置。
3. Map中任意两个元素不能享有同一个key值。
4. Map是用二叉搜索数实现的。
Unordered_map:
1. Unordered_map中的元素通过键值对组织在一起,也就是说可以通过key来找到与其对应的元素。
2. Unordered_map中的元素不需要按照一定的顺序排列,插入的顺序就是元素在unordered_map里的顺序。
3. Unordered_map中任意两个元素不能享有同一个key值。
4. Unordered_map是用hash table组织元素结构的。
总结:通过讨论元素是否有序(通过key值排序)选择map或者unoredered_map.
以上是当key值不能重复的时候的情况,如果可以允许两个或者两个以上的元素使用同一个key值,map和unordered_map就不好使了。这种情况下可以使用multimap,multimap允许两个或者两个以上元素享用同一个key值,然后在根据元素是否需要被排序来选择multimap或者unordered_multimap;
需要注意的是,multimap和map享用同一个头文件,unordered_map和unordered_multimap享用同一个头文件。
#include
using namespace std;
#include
最后
以上就是优秀画板最近收集整理的关于c++ STL 容器之 map的全部内容,更多相关c++内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复