map/multimap/hashmap的区别

Posted WQP_Ya_Ping

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了map/multimap/hashmap的区别相关的知识,希望对你有一定的参考价值。

Map:  

  STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据映射处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的.

具体应用:点击打开链接

Multimap:   

它与 map 类似,所不同的是它允许重复键。这个属性使得 multimap 比预想的要更有用:比如在电话簿中相同的人可以有两个以上电话号码,文件系统中可以将多个符号链接映射到相同的物理文件,或DNS服务器可以将几个URLs映射到相同的IP地址。

具体应用:点击打开链接

Hashmap:

hash_map基于hash table(哈希表)。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的 情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。

其基本原理是:使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下 标,hash值)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照关键字为每一个元素“分类”,然后将这个元素存储在相应“类”所对 应的地方,称为桶。

具体应用:点击打开链接

以上是关于map/multimap/hashmap的区别的主要内容,如果未能解决你的问题,请参考以下文章

c++中 #define和const的区别

用有限个栈模拟常数效率操作的队列

简介变量常数if基础数据类型注释input()

Numpy Infinity常数-inf,infty,Inf,Infty之间的差异。什么时候使用?

树状数组和线段树有啥区别?

EViews中用ls y c AR(1)和ls y c y(-1)计算出的模型为啥常数项不一样,而且还差很多