最近在mfc中用到字典,自己不會在網上查了資料。簡單總結一下:
一,cmap是什麼?
對映(map),又稱為字典(dictionary),是由關鍵字(key)及其對應的元素值(value)所組成的元素單
元(element)的表單式集合。cmap是乙個mfc的模板類,可以建立乙個從任意型別的變數到另外乙個任意型別的
變數的對映(map),用的是雜湊表作儲存,因此速度較快。對於要求查詢速度快一般用陣列,對於增加/刪除操作
方便的都用鍊錶,但要是兩者綜合一下,最好還是用合希表。
二,要注意的幾個地方:
1.如何宣告cmap
許多人對cmap的宣告模式cmap感到迷惑,為什麼不用cmap
呢?實際上,cmap中的的資料最終會是cpair,而cpair內部是(key,value)。因此,cmap其實儲存的是key
,而非arg_key。然而,如果你檢視mfc的源**,幾乎cmap所有的內部引數傳遞都是訪問arg_key和arg_value,因此,使用key&來代替arg_key似乎是正確的,除了在這些情況下:
1 應用簡單的資料型別,如int ,char用值傳遞與引數傳遞沒有什麼不同
2 如果用cstring作為key,你應該用lpctstr做arg_key而非cstring&。
2.有哪些與map相關的典型操:
1 向map中插入具有給定關鍵字的元素單元。
2 在map中查詢具有給定關鍵字的元素單元。
3 在map中刪除具有給定關鍵字的元素單元。
4 列舉(遍歷)map中的所有元素單元。
三,簡單的例子:
例子一: 我們來看乙個cmap的用法,下面示例**:
cmapmymap;
//初始化雜湊表,並指定其大小(取奇數)。mymap.inithashtable(257);
//向mymap中新增元素單元。
for (int i=0;i < 200;i++)
mymap.setat( i, cpoint(i, i) );
// 刪除實際值為偶數的關鍵字所對應的的元素單元。
position pos = mymap.getstartposition();
int nkey;
cpoint pt;
while (pos != null)
#ifdef _debug
afxdump.setdepth( 1 );
afxdump << "mymap: " << &mymap << "/n";cmapmymap;
//初始化雜湊表,並指定其大小(取奇數)。mymap.inithashtable(257);
//向mymap中新增元素單元。
for (int i=0;i < 200;i++)
mymap.setat( i, cpoint(i, i) );
// 刪除實際值為偶數的關鍵字所對應的的元素單元。
position pos = mymap.getstartposition();
int nkey;
cpoint pt;
while (pos != null)
#ifdef _debug
afxdump.setdepth( 1 );
afxdump << "mymap: " << &mymap << "/n";
cmap是個很不錯的資料結構,尤其在你建立乙個字典的時候。比如idcountry的含義是"中國",這就是乙個元組
,也就是乙個pair,key是"idcountry",而value是"中國"。
例子二:
1、定義乙個cmap,向這個cmap中增加資料項(鍵-值對)。
cmapm_itemmap;
cstring strkey = _t(""), str = _t("");
int i;
for(i = 0; i < 5; i++)
2、遍歷正個cmap的常用方法。
position pos = m_itemmap.getstartposition();
while(pos)
3、在cmap中查詢相應的資料項。
cstring preset;
if(m_itemmap.lookup("1", preset))
{cout<
**:
VC 中CMAP的使用
本文出處 對映錶類 cmap 是mfc集合類中的乙個模板類,也稱作為 字典 就像一種只有兩列的 一列是關鍵字,一列是資料項,它們是一一對應的。關鍵字是唯一的,給出乙個關鍵字,對映錶類會很快找到對應的資料項。對映表的查詢是以雜湊表的方式進行的,因此在對映表中查詢數值項的速度很快。對映類最適用於需要根據...
簡介vc中的release和debug版本的區別
debug通常稱為除錯版本,它包含除錯資訊,並且不作任何優化,便於程式設計師除錯程式。release稱為發布版本,它往往是進行了各種優化,使得程式在 大小和執行速度上都是最優的,以便使用者很好地使用。debug 和 release 的真正秘密,在於一組編譯選項。下面列出了分別針對二者的選項 當然除此...
vc 中Dao資料庫的簡單應用例項
1 工資管理系統 該系統在磁碟上儲存了某單位上月全體員工的工資資訊,對於每一位職工儲存以下資訊 月份,職工編號,基本工資,津貼,崗貼,補貼,房貼,交通補貼,應發數,房租,儲蓄,會費,個人所得稅,應扣數,實發數。個人所得稅計算方法設定為 工資少於800元為0,800 1000元的部分為5 1000 5...