五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

鏈表模板類QList

2022-12-27 12:50 作者:bili_98931215023  | 我要投稿

1.定義鏈表節(jié)點(diǎn)類Node

2.定義鏈表類QList<T>

注意:模板類的聲明和實(shí)現(xiàn)都在.h文件中

各個成員函數(shù)的實(shí)現(xiàn)

構(gòu)造函數(shù):QList::QList();

添加新的數(shù)據(jù)到鏈表中:void Add(T* pData);

新數(shù)據(jù)是在外部New出來的內(nèi)存地址指針

排序:void Short;

因這鏈表只保存內(nèi)存地址,所以排序就要通過外部條件傳進(jìn)排序條件

所以定義一個函數(shù)指針來比較兩個節(jié)點(diǎn)中數(shù)據(jù)域中的數(shù)據(jù)大小

//比較兩個數(shù)據(jù)函數(shù)指針

typedef BOOL CmpData(T*, T*);

應(yīng)用實(shí)例:

1.鏈表的創(chuàng)建:

QList<STUDENT> m_stuList;

STUDENT為自定義結(jié)構(gòu)類型

也可以New一個鏈表

QList<STUDENT>* m_pStuList;

m_pStuList=new QList<STUDENT>(TRUE);

新New的鏈表對象要傳TRUE,表明是New出來的對象

在清空節(jié)點(diǎn)時(shí)根據(jù)這個值來判斷是否刪除鏈表自身(delete this);


2.根據(jù)外部條件來排序

void Short(T* t1,T* t2);

a.外部函數(shù)指針用拉姆達(dá)表達(dá)式

拉姆達(dá)表達(dá)式另一種寫法:

b.通過外部全局函數(shù)來實(shí)現(xiàn)

4.根據(jù)外部條件查詢多個數(shù)據(jù)組成的鏈表:FindArray

返回的鏈表是在堆中New的,所以用后要刪除

返回的鏈表節(jié)點(diǎn)數(shù)據(jù)域的指針是不能被刪除的,所以清空時(shí)要用ClearNode只清空節(jié)點(diǎn)內(nèi)存

不要用ClearAll清空所有的節(jié)點(diǎn)和數(shù)據(jù)域內(nèi)存,如果用了原來的鏈表中的數(shù)據(jù)域內(nèi)存也沒了

如果在清空節(jié)點(diǎn)后有自動刪除本身,在外部就不必刪除了,直接賦空值就OK

這個函數(shù)指針類型要帶參數(shù):

//查找指定條件的函數(shù)指針

typedef BOOL FindData(LPARAM,T*);

應(yīng)用,和排序一樣,可用拉姆達(dá)表達(dá)式,和全局函數(shù)來實(shí)現(xiàn)

實(shí)例:

查找年齡>30的所有數(shù)據(jù)

問題說明:

關(guān)于拉姆達(dá)表達(dá)式我還沒弄明白,不知道如何把30這個值傳遞到匿名函數(shù)中

我用了[=n]這個符號也不成功,

如果30是全局變量就能實(shí)現(xiàn)傳遞,在類函數(shù)中的變量就傳遞不過去

所有就用了下面這種辦法,

先把30傳遞到FindArray函數(shù)中,在從FindArray通過lParam傳遞到匿名函數(shù)中,

?這樣就走了個彎路,


5.根據(jù)外部條件刪除符合條件的所有數(shù)據(jù)

int DelFindData(LPARAM lParam,FindData bFindData);

實(shí)例應(yīng)用:

刪除年齡<=32的所有數(shù)據(jù)


鏈表模板類QList的評論 (共 條)

分享到微博請遵守國家法律
板桥市| 威远县| 龙里县| 安福县| 东光县| 贵定县| 应用必备| 静乐县| 山东省| 探索| 阜阳市| 阿合奇县| 平谷区| 阿拉善盟| 余姚市| 理塘县| 盐源县| 工布江达县| 留坝县| 岚皋县| 昌吉市| 福海县| 尼勒克县| 开原市| 泽州县| 会昌县| 楚雄市| 谢通门县| 惠安县| 渝北区| 东乌| 当雄县| 年辖:市辖区| 固始县| 丽水市| 梁河县| 儋州市| 赣榆县| 盖州市| 芒康县| 龙岩市|