MFC中Map类型

来源:百度知道 编辑:UC知道 时间:2024/06/17 17:13:35
看MFC看到里面讲数据结构有数组,链表,MAP,我一直以为MAP是数组和链表,或是链表和链表的组合,可是上面说MAP可以有键值,和VALUE,可以快速检索,很困惑怎么快速检索,难道MAP是重更高级的与数组和链表不同的结构?谁能跟我介绍一下MAP里面的结构,谢了,哈西表是我在数据结构里没懂的知识,和哈西表一样吗?

映射(Map),又称为字典(Dictionary),是由关键字(Key)及其对应的元素值(Value)所组成的元素单元(Element)的表单式集合。

  通常,对于Map而言,使用给定的Key,可以迅速地从单元集合中检索到相应的元素。因此,在需要对大量数据进行查找操作而查找的性能又占据重要地位的场合,Map无疑是一种较理想的容器。譬如,在MFC中,使用Map来实现HandleMaps(句柄映射),以及其他的一些内部数据结构。同时,MFC也提供了公共Map类。使用公共Map类,MFC程序员可以轻易地高效地根据自身的需求实现程序中自定义的映射。

  通常,当一个Map对象被删除时,或者,当其中的元素被移除时,关键字和元素值也将被完全删除。

  从数据结构的角度分析,有关Map的典型操作有:

  1、向Map中插入具有给定关键字的元素单元。

  2、在Map中查找具有给定关键字的元素单元。

  3、在Map中删除具有给定关键字的元素单元。

  4、枚举(遍历)Map中的所有元素单元。

哈希表,只是一种存储方式。
MAP是一种数据结构,也就是一种<id,value>的匹配存储结构体——这个是实际的软件应用中很常用的。
id,就跟身份证编码一样,value可以记录你的名字或者其它信息。id是唯一的,也就是在一个map对象里面它是个键值,value的值可以雷同。
MAP对象在内存中的存储方式估计也就是结构体的链表存储结构,相当于:

{1,"liubang",nextpoint} // nextpoint表下个节点(<id,value>结构体)的内存地址。系统编译时候附加上去的
{2,"xiangyu",nextpoint}
...

哈希表适合用于数据量比较大的场合,对应小数据量的场合,效果会适得其反。

这里的map只是用来做消息映射,他通过哈希函数,得到你要找的东西;
简单的说就是如果你要找一个a对应的内存为&a,如果按照查找的方