映射表類(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;
}