CMap類的用法

2021-06-14 02:02:10 字數 3093 閱讀 1236

定義: 

cmapmymap(16); 

賦值: 

for (int i=0;i < 10;i++) 

mymap.setat( i, cpoint(i, i) );  

賦完值後就變成如下這樣: 

索引   值 

0 -> (0,0) 

1 -> (1,1) 

2 -> (2,2) 

3 -> (3,3) 

4 -> (4,4) 

5 -> (5,5) 

6 -> (6,6) 

7 -> (7,7) 

8 -> (8,8) 

9 -> (9,9)

//關鍵字為int型 比如學號 

cmapm_cmap; 

m_cmap.setat(9923033, "張三"); 

m_cmap.setat(9826033, "張a"); 

m_cmap.setat(9923063, "張b"); 

m_cmap.setat(9923093, "張c"); 

cstring strname; 

m_cmap.lookup(9923063, strname);  

參考: 

map的宣告: 

加上typedef cmapcmapdwordtomystruct; 

以後直接用cmapdwordtomystruct進行宣告,方便不少。 

map的初始化: 

變數定義在doc中,在onnewdocument()中進行第一次的初始化。 

cmystruct* pmystruct2 = new cmystruct(); 

pmystruct2->m_int = 2468; 

pmystruct2->m_float = 24.68f; 

pmystruct2->m_str.loadstring(ids_initial_string); 

m_mapdwordtomystruct[100] = pmystruct2;//是這樣插入資料的。 

檢視啟動的時候做這些事情: 

dword dwkey; 

cmystruct* pmystruct; 

m_ctllist.resetcontent(); 

cmapdwordtomystruct& map = getdocument()->m_mapdwordtomystruct; 

position pos = map.getstartposition(); 

while (pos != null) 

//以上**遍歷讀取map的資料並送到控制項中進行顯示。 

新增和替換操作: 

// add or replace entry in the listbox 

int nsel = findkeyinlistbox(m_dwkey);//從控制項中得到key 

if (nsel != lb_err) 

m_ctllist.deletestring(nsel);//如果存在在控制項中刪除記錄 

cmystruct* pmystruct = constructmystructfromview();//從控制項資料新建結構 

addmapentrytolistbox(m_dwkey, pmystruct);//加入到列表控制項 

// add or update association in the cmap 

cmystruct* ptemp; 

if( getdocument()->m_mapdwordtomystruct.lookup( m_dwkey, ptemp ) ) 

delete ptemp; // delete old value//查詢目標,如果存在則刪除,很方便的操作,不是嗎? 

getdocument()->m_mapdwordtomystruct[m_dwkey] = pmystruct;//新增記錄 

全部刪除操作: 

ccollectdoc* pdoc = getdocument(); 

position pos = getdocument()->m_mapdwordtomystruct.getstartposition(); 

while (pos != null) 

pdoc->m_mapdwordtomystruct.removeall(); 

m_ctllist.resetcontent(); 

刪除操作: 

if (updatedata() != true) 

return; 

cmystruct* pmystruct; 

cmapdwordtomystruct& map = getdocument()->m_mapdwordtomystruct; 

if (map.lookup(m_dwkey, pmystruct) != true) 

if (m_int != pmystruct->m_int 

|| m_float != pmystruct->m_float 

|| m_str != pmystruct->m_str) 

// remove assocation from the listbox 

int nsel = findkeyinlistbox(m_dwkey); 

assert(nsel != lb_err); 

m_ctllist.deletestring(nsel); 

// remove the association from the cmap 

map.removekey(m_dwkey); 

// delete cmystruct 

delete pmystruct; 

查詢操作: 

if (updatedata() != true) 

return; 

cmystruct* pmystruct; 

if (getdocument()->m_mapdwordtomystruct.lookup(m_dwkey, pmystruct) != true) 

updateviewfrommystruct(pmystruct); 

這裡主要是cmap在文件檢視中的用法,可以看出,微軟的**寫的非常嚴密,安全檢查意識很好,函式的封裝比較得體。

C map函式的用法

對map函式的一些整理 c map的基本操作和使用 map是c 的乙個標準容器,她提供了很好一對一的關係,在一些程式中建立乙個map可以起到事半功倍的效果,總結了一些map基本簡單實用的操作!1 map簡介 map是一類關聯式容器。它的特點是增加和刪除節點對迭代器的影響很小,除了那個操作節點,對其他...

C map函式的用法

stl中的map函式是將 key,value 資料以紅黑樹儲存的容器 其中關鍵字 key 只出現一次 map的定義 map mp 定義了乙個名為m的空的map物件 map mp m2 建立了m2的副本mp map的插入 map可以自動建立key value的對應。key 和 value可以是任意你需...

C MAP 基本用法

map內部資料的組織,map內部自建一顆紅黑樹 一種非嚴格意義上的平衡二叉樹 這顆樹具有對資料自動排序的功能,所以在map內部所有的資料都是有序的。include include using namespace std typedef mapmapstudent typedef map iterat...