日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT中的集合

發(fā)布時間:2023/12/18 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT中的集合 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

QT核心編程之集合類是本篇要介紹的內(nèi)容。QT核心編程我們要分幾個部分來介紹,想?yún)⒖几鄡?nèi)容,請看末尾的編輯推薦進(jìn)行詳細(xì)閱讀,先來看本篇內(nèi)容。

一個集合類是裝有多個條目的容器,每個條目是某種數(shù)據(jù)結(jié)構(gòu),集合類能執(zhí)行對容器中的條目的插入、刪除及查找等操作。

Qt有幾個基于值和基于指針的集合類。基于指針的集合類使用指向條目的指針來工作,而基于值的集合類存儲著它們條目的拷貝。基于值的集合類類似于STL容器類,能和STL算法和容器一起使用。

基于值的集合類說明如表4所示:

表4 基于值的集合類表

基于指針的集合類說明如表5所示:

表5 基于指針的集合類表

QMemArray 是一個例外,它既不是基于指針也不是基于值,而是基于內(nèi)存的結(jié)構(gòu)。用于在有簡單數(shù)據(jù)結(jié)構(gòu)的數(shù)組中使用QMemArray效率最高,QMemArray在拷貝和數(shù)組元素比較時使用位邏輯運(yùn)算符操作。

這些類中有一些具有迭代器,迭代器是遍歷集合類中的條目的類。在Qt模板庫里,基于值的集合和算法集成在一起。下面討論基于指針的容器。

1、基于指針的容器的結(jié)構(gòu)

基于指針的容器有4個內(nèi)部基類(QGCache, QGDict, QGList和QGVector)操作void類型指針。通過增加/刪除條目指針,一個由這4個類組成的薄模板層實(shí)現(xiàn)了實(shí)際的集合。

允許Qt的模板類的策略使得在空間上很經(jīng)濟(jì)(實(shí)現(xiàn)這些模板類僅增加了對基類的內(nèi)聯(lián)調(diào)用),而且還不影響執(zhí)行效率。

示例:QPtrList使用

下面的例子說明了如何存儲Employee條目到一個鏈表,并將它們以相反的次序打印出來。

  • #include?<qptrlist.h>
  • #include?<qstring.h>
  • #include?<stdio.h>
  • class Employee{public: Employee( const char *name, int salary ) {
  • n=name;?s=salary;
  • }
  • const char *name() const {
  • return n;
  • }
  • int salary() const {
  • return s;
  • }
  • private: QString n;
  • int s;
  • };
  • int main(){
  • QPtrList<Employee>?list; // 指向Employee的指針鏈表
  • list.setAutoDelete( TRUE ); //當(dāng)鏈表?xiàng)l目被移動時,刪除條目
  • list.append( new Employee("Bill", 50000) ); //鏈表追加新的對象
  • list.append( new Employee("Steve",80000) );
  • list.append( new Employee("Ron", 60000) );
  • QPtrListIterator<Employee>?it(list); //遍歷Employee鏈表
  • for ( it.toLast(); it.current(); --it) ) { //從尾向頭遍歷
  • Employee *emp?=?it.current();
  • printf( "%s earns %d\n", emp->name(), emp->salary() );
  • }
  • return 0;
  • }
  • 程序運(yùn)行結(jié)果如下:

  • Ron earns 60000
  • Steve earns 80000
  • Bill earns 50000
  • 2、管理集合條目

    所有基于指針的集合繼承了QPtrCollection基類。這個類僅知道集合中的條目個數(shù)和刪除策略。

    當(dāng)集合中的條目被移去時,缺省時它們不被刪除。QPtrCollection::setAutoDelete()定義了刪除策略。在上述QPtrList使用示例子,我們激活了自動刪除功能來進(jìn)行鏈表刪除。

    當(dāng)插入一個條目到一個集合時,僅指針被拷貝,而不是拷貝條目本身。這稱為淺拷貝。當(dāng)插入一個條目時,拷貝所有條目的數(shù)組到集合中也是可能的,這稱為深拷貝。

    所有的集合類函數(shù)在插入條目時調(diào)用虛擬函數(shù)QPtrCollection::newItem()。如果你想進(jìn)行深拷貝,你需要重載它。

    當(dāng)從一個鏈表中移去一個條目時,調(diào)用虛擬函數(shù)QPtrCollection::deleteItem()。如果自動刪除功能被激活,在所有集合類中的缺省實(shí)現(xiàn)函數(shù)被調(diào)用來刪除條目。

    基于指針的集合類,如:QPtrList<type>,定義了指向?qū)ο蟮闹羔樇稀N覀冊谶@里只討論QPtrList類,其它的基于指針的集合類和所有集合類迭代器都有同樣的使用方法。

    模板實(shí)例化方法如下:

  • QPtrList<Employee>?list;
  • 在這個例子中,條目的類或類型是Employee,它必須在鏈表定義之前被定義。例如:

  • class Employee { ...};
  • QPtrList<Employee>?list;
  • 3、迭代器(Iterators)

    QPtrListIterator能在鏈表被修改的同時非常安全的遍歷鏈表。在同一個集合上,多個迭代器能獨(dú)立地工作。

    QPtrList有一個指向所有迭代器的內(nèi)部鏈表,這些迭代器當(dāng)前操作鏈表。當(dāng)一個鏈表?xiàng)l目被移去時,鏈表更新所有的指向這個條目的迭代器。

    QDict和QCache集合沒有遍歷函數(shù)。為了遍歷集合,你必須使用QDictIterator或 QCacheIterator。

    Qt預(yù)定義的集合類有字符串鏈表:QStrList, QStrIList (在qstrlist.h中)和 QStringList (在qstringlist.h中)。在絕大多數(shù)情況下你將選擇QStringList,它是一個共享的QString Unicode字符串的值鏈表。QPtrStrList和 QPtrStrIList僅存儲字符指針,而不是字符串本身。

    基于指針的集合類和相關(guān)的迭代器類說明如表4。

    ?

    出處:http://www.cnblogs.com/newstart//

    QList以列表形態(tài)存儲并管理值,并能進(jìn)行基于快速索引的訪問,也可以進(jìn)行快速的數(shù)據(jù)刪除操作。

    QList使用運(yùn)算符將項(xiàng)目添加到列表

    QList<QString> list; list<<"one"<<"two"<<“three”; //list:["one","two","three"]

    QList通過比較運(yùn)算符來獲得返回值

    if(list[0]=="Bob")list[0]="Robert";

    QList實(shí)現(xiàn)指針數(shù)組后,通過快速運(yùn)算獲取存儲到QList的值。
    并且使用函數(shù)at()可以很容易的獲得存儲到列表的位置。

    for( int i=0; i< list.size(); ++i) {if(list.at(i)=="J")cout <<"J at position " << i <<endl; }

    總結(jié)

    以上是生活随笔為你收集整理的QT中的集合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美三级网站 | 色伊人网 | 岛国大片在线 | 羞视频在线观看 | 久久人妻精品白浆国产 | 成人性生交大片免费看r链接 | 国产aaaaaaa| 中文字幕9 | a级片中文字幕 | 欧美处女 | 日韩一级理论片 | 性生交生活影碟片 | 男生舔女生的屁股 | aaa成人 | 久久亚 | 国外成人性视频免费 | 日本一本高清视频 | 手机av在线播放 | 亚洲国产精品成人va在线观看 | 日一日射一射 | 99热只有这里有精品 | 骚婷婷| 日韩网站免费 | 五月天av影院 | 国产精久 | 国产激情视频在线观看 | 96视频在线 | 亚洲欧美综合另类 | av网站在线免费播放 | 亚洲天堂女人 | 黄色一级毛片 | 9久久精品 | 国产精品久久久久久一区二区三区 | 日韩一级片网站 | 日本韩国中文字幕 | 午夜精品在线视频 | 重口h文| 亚洲少妇毛片 | 中文字幕人妻一区二区三区 | 国产不卡一区 | 亚色av| 亚洲狠狠 | 久久婷婷精品 | 三级黄色网| 天天看天天操 | 日韩精品一区不卡 | 狠狠干2018| 天天看毛片 | 欧美午夜激情影院 | 一级视频在线观看 | 4438成人网 | 日韩一区二区三区在线观看视频 | 日韩视频在线观看免费视频 | 强迫凌虐淫辱の牝奴在线观看 | 亚洲日本片 | 欧美视频一区二区三区四区 | 免费在线h | 男人都懂的网址 | 国产精品久久久无码一区 | 二区视频在线观看 | 亚洲www色 | 欧美在线激情视频 | 日韩精品视频在线 | 日本不卡一区二区三区视频 | 久久入口 | 福利视频不卡 | 波多野结衣亚洲一区二区 | 成人免费视频视频 | 国产又黄又大又粗视频 | 国产又大又粗又长 | 日韩欧美一级视频 | 亚洲污污视频 | 国产一级特黄毛片 | 黄色国产一区二区 | 欧美极品喷水 | jzjzz成人免费视频 | 精品国产免费看 | 美女在线观看www | 福利电影一区二区三区 | 亚洲国产精品午夜久久久 | 国产男女裸体做爰爽爽 | 午夜激情在线观看 | 亚洲色图综合 | 懂色av一区二区三区在线播放 | 欧美性插动态图 | 视频在线观看免费大片 | 中文字幕影片免费在线观看 | 色哟哟一区 | 人妻视频一区二区三区 | 影音先锋美女 | 欧美成人h版在线观看 | 欧美色图19p| 男女操操操 | 欧美变态绿帽cuckold | 人人舔人人插 | 午夜性色福利视频 | 欧美日韩视频一区二区 | 在线观看第一页 | 少妇精品一区 |