定義:
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...