最近在mfc中用到字典,自己不会在网上查了资料。简单总结一下:
一、CMap是什么?
映射(Map),又称为字典(Dictionary),是由关键字(Key)及其对应的元素值(Value)所组成的元素单
元(Element)的表单式集合。CMap是一个mfc的模板类,可以建立一个从任意类型的变量到另外一个任意类型的
变量的映射(map),用的是哈希表作存储,因此速度较快。对于要求查找速度快一般用数组,对于增加/删除操作
方便的都用链表,但要是两者综合一下,最好还是用合希表。
二、要注意的几个地方:
1.如何声明CMap
许多人对Cmap的声明模式CMap<KEY,ARG_KEY,VALUE,ARG_VALUE>感到迷惑,为什么不用
CMap<KEY,VALUE>
呢?实际上,CMap中的的数据最终会是CPair,而CPair内部是(KEY,VALUE)。因此,CMap其实存储的是KEY
,而非ARG_KEY。然而,如果你查看MFC的源代码,几乎CMap所有的内部参数传递都是访问ARG_KEY和ARG_VALUE,因此,使用
KEY&来代替ARG_KEY似乎是正确的,除了在这些情况下:
a 应用简单的数据类型,如int
,char用值传递与参数传递没有什么不同
b
如果用CString作为KEY,你应该用LPCTSTR做ARG_KEY而非CString&。
2.有哪些与Map相关的典型操:
a 向Map中插入具有给定关键字的元素单元。
b 在Map中查找具有给定关键字的元素单元。
c 在Map中删除具有给定关键字的元素单元。
d 枚举(遍历)Map中的所有元素单元。
三、简单的例子:
例子一: 我们来看一个CMap的用法,下面示例代码:
CMap是个很不错的数据结构,尤其在你建立一个字典的时候。比如idcountry的含义是"中国",这就是一个元组
,也就是一个Pair,Key是"idcountry",而Value是"中国"。
例子二:
1、定义一个CMAP,向这个CMAP中增加数据项(键-值对)。
2、遍历正个CMAP的常用方法。
3、在CMAP中查找相应的数据
项。
原文地址:http://blog.youkuaiyun.com/wjhuangjin/archive/2009/11/17/4823661.aspx