天天看點

MFC CMap整理

映射表類(CMap)是MFC集合類中的一個模闆類,也稱作為“字典”。CMap是把唯一關鍵碼映射到值的字典收集類,使用CMap可以構造一個關鍵字和元素值映射的集合類。一旦在映射中插入了一個關鍵碼值對(元素),就可以使用這些關鍵碼,有效地擷取或者删除對元素。同樣,也可以反複使用映射中的所有元素。 就像一種隻有兩列的表格,一列是關鍵字,一列是資料項,它們是一一對應的。關鍵字是唯一的,給出一個關鍵字,映射表類會很快找到對應的資料項。映射表的查找是以哈希表的方式進行的,是以在映射表中查找數值項的速度很快。映射類最适用于需要根據關鍵字進行快速檢索的場合。在查找時不用像數組那樣周遊index之前的元素,通過哈希表關鍵字可以快速查找其對應鍵值。

#include <afxtempl.h>      

CMap類的成員:

構造函數:​

​CMap​

操作:

Lookup:查找與指定關鍵碼對應的值

SetAt:在映射中插入一個元素,如果發現相比對的關鍵碼,則替換已經存在的元素

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

 RemoveKey:删除關鍵碼指定的元素

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

 GetStartPosition:傳回第一個元素的位置

 GetNextAssoc:擷取循環中的下一個元素

 GetHashTableSize:擷取散清單的大小(元素的個數)

 InitHashTable:初始化散清單,并指定其大小      

狀态:

GetCount:傳回Map中元素的數目

 IsEmpty:檢查Map是否為空(即字典中無元素單元)      

舉例如下:

1.定義一個CMap,向這個CMap中增加資料項(鍵-值對)

CMap<CString,LPCTSTR,CString,LPCTSTR>my_Map;
CString strKey = _T(""),strValue = _T("");
int i;
for(i=0;i<5;i++)
{

    strKey.Format("%d",i);
    strValue.Format("V%d",i);
    my_Map.SetAt(strKey,strValue);
}      

2.周遊整個CMap的常用方法

POSITION pos = myMap.GetStartPosition();
while(pos)
{
    myMap.GetNextAssoc(pos,strKey,strValue);
    cout<<strKey<<":"<<strValue<<endl;
}      
CString pLook;
if(myMap.Lookup("1",pLook))
{
    cout<<pLook<<endl;
}      

繼續閱讀