VC 中CMap的簡介和簡單例項!

2021-06-05 11:39:32 字數 2119 閱讀 8636

最近在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...