首页 > 编程语言 > 详细

MFC - CMap

时间:2019-03-25 17:02:25      阅读:278      评论:0      收藏:0      [点我收藏+]

映射表类(CMap)是MFC集合类中的一个模板类,也称作为“字典”。 类似于c++ STL map或hashmap

#include <afxtempl.h>

构造

CMap<KEY,ARG_KEY,VALUE,ARG_VALUE>

操作:

Lookup:查找与指定关键码对应的值

SetAt:在映射中插入一个元素,如果发现相匹配的关键码,则替换已经存在的元素

Operator[]:在映射中插入一个元素,它是代替SetAt的操作符

RemoveKey:删除关键码指定的元素

RemoveAll:删除映射中所有的元素

GetStartPosition:返回第一个元素的位置

GetNextAssoc:获取循环中的下一个元素

GetHashTableSize:获取散列表的大小(元素的个数)

InitHashTable:初始化散列表,并指定其大小

状态:

GetCount:返回Map中元素的数目

IsEmpty:检查Map是否为空(即字典中无元素单元)

 

示例:

1.定义一个CMap,向这个CMap中增加数据项(键-值对)

CMap<CString,LPCTSTR,CString,LPCTSTR> Map;

CString strKey = _T(""),strValue = _T("");

int i;

for(i=0;i<5;i++){

    strKey.Format("%d",i);

    strValue.Format("V%d",i);

    Map.SetAt(strKey,strValue);

}

2.遍历整个CMap的常用方法

POSITION pos = Map.GetStartPosition();

while(pos){

    Map.GetNextAssoc(pos,strKey,strValue);

    cout<<strKey<<":"<<strValue<<endl;

}

3.在CMap中查找相对应的数据项(举例查找关键字"1"对应的键值)

CString pLook;

if(Map.Lookup("1",pLook)){

    cout<<pLook<<endl;

}

备注: CMap的声明模式CMap<KEY,ARG_KEY,VALUE,ARG_VALUE> 很难理解,为什么不像c++ STL的声明直接是CMap<Key,Value>?实际上,CMap中数据最终会是CPair,而CPair即为(KEY,VALUE),因此,CMap其实存储的是KEY,而不是ARG_KEY

MFC - CMap

原文:https://www.cnblogs.com/reboost/p/10594667.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!