之前我們先以cstringlist為例演示下列成員方法:
addtail, addhead, getheadposition, gettailposition, getprev(), getnext()
我們看到如何向乙個clist類中增加資料:可以從兩端增加,以及如何遍歷整個clist……
[cpp]view plain
copy
#include
#include
#include
using
std::cout;
using
std::endl;
intmain() ;
cstringlist list;
for(
inti = 0; i <
sizeof
(str) /
sizeof
(str[0]); i++)
list.addtail(str[i]);
position pos = list.getheadposition();
while
(pos != null)
trace("之後呢:/n"
);
for(
inti = 0; i <
sizeof
(str) /
sizeof
(str[0]) - 1; i++)
list.addhead(str[i]);
pos = list.getheadposition();
while
(pos != null)
trace("再之後呢:/n"
);
pos = list.gettailposition();
while
(pos != null)
}
getat與setat方法:
[cpp]view plain
copy
#include
#include
#include
using
std::cout;
using
std::endl;
intmain() ;
cstringlist list;
for(
inti = 0; i <
sizeof
(str) /
sizeof
(str[0]); i++)
list.addtail(str[i]);
position pos = list.gettailposition();
cstring string = list.getat(pos);
trace(_t("%s/n"
), string);
trace(_t("after setat: /n"
));
list.setat(pos, _t("hehehehe"
));
string = list.getat(pos);
trace(_t("%s/n"
), string);
}
removeat, insertbefore, insertafter方法:
[cpp]view plain
copy
#include
#include
#include
using
std::cout;
using
std::endl;
intmain() ;
cstringlist list;
for(
inti = 0; i <
sizeof
(str) /
sizeof
(str[0]); i++)
list.addtail(str[i]);
position pos = list.gettailposition();
list.removeat(pos);
pos = list.gettailposition();
while
(pos != null)
pos = list.gettailposition();
list.insertbefore(pos, _t("huhu!!!"
));
list.insertafter(pos, _t("i am the last!"
));
pos = list.getheadposition();
trace(_t("經過insertbefore和insertafter: /n"
));
while
(pos != null)
}
以及採用模板特性的clist:
標頭檔案:
[cpp]view plain
copy
#pragma once
class
cpoint3d
cpoint3d(int
xx,
intyy,
intzz) : x(xx), y(yy), z(zz) {}
intoperator==(
const
cpoint3d& pt)
const
};
實現:[cpp]view plain
copy
#include
#include
#include
#include "clistdemo.h"
using
std::cout;
using
std::endl;
intmain()
trace("自定義類使用:/n"
);
clistlist1;
for(
inti = 0; i < 10; i++)
list1.addhead(cpoint3d(i, i * i, i * i * i));
pos = list1.getheadposition();
while
(pos != null)
pos = list1.find(cpoint3d(6, 36, 216));
cpoint3d point3dfind = list1.getat(pos);
trace("查詢展示,嘿嘿:"
);
trace(_t("x = %d/ty = %d/tz = %d/n"
), point3dfind.x, point3dfind.y, point3dfind.z);
}
在這裡我使用了find成員方法來對模板clist進行查詢,所以我們必須在自定義的類中過載「==」運算子,看到了標頭檔案
當中的operator==方法吧……
from:
msdn:
集合類 CList的使用
集合類 clist的使用 今天,在專案中,需要使用集合類,考慮到使用簡單 方便,所以選擇了clist。可沒想到在使用的過程中卻出現了學多問題。1.無法實現集合類的複製,需要過載類的 運算子 錯誤提示為無法從funlistnode 轉換到funlistnode 2.沒有可用的複製構著函式 3.沒有預設...
MFC之集合類(一)
長久以來,在用到集合類 collection 時,一般都是開啟示例collect,從中copy出其中的定義,依葫蘆畫瓢地用,從來沒有徹底的了解其原理。今天終於把相關的msdn文件細讀了一遍。從功能上分,集合類又分為array,list和map。array和list其實都屬於同一類,都是一種順序儲存方...
C List集合類常用操作 一
所有操作基於以下類 class employees public string name public string city public datetime birthdate list 初始化 list類的新例項,該例項為空並且具有預設初始容量。listemployees new list em...