最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt中QList與QLinkedList類的常用方法總結(jié)

 更新時(shí)間:2022年12月14日 10:50:57   作者:霸道小明  
這篇文章主要為大家詳細(xì)介紹了Qt中QList與QLinkedList類的常用方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定的幫助,需要的可以參考一下

QList<T>維護(hù)了一個(gè)指針數(shù)組,數(shù)組元素指向每一個(gè)鏈表項(xiàng),因此QList<T> 提供了基于下標(biāo)的快速訪問。QLinkedList<T>是一個(gè)鏈?zhǔn)搅斜?,不能使用下?biāo)訪問,與QList相比,當(dāng)對(duì)一個(gè)很大的列表進(jìn)行插入操作時(shí),QLinkedList更高效。

QList<T>

1.鏈表插入元素

list<<1<<2<<3;
list.append(4);//鏈表頭部添加
list.prepend(0);//鏈表頭部添加
list.insert(5,10);
qDebug()<<list;

2.索引元素

使用下標(biāo)或者at( )方法索引元素

QList<int>list;
list<<1<<2<<3<<4<<5<<100;
qDebug()<<"鏈表第三個(gè)元素:"<<list.at(2);
qDebug()<<"鏈表第二個(gè)元素:"<<list[1];

3.判斷鏈表是否包含某個(gè)元素

QList<int>list;
list<<1<<2<<3<<4<<5<<100;
qDebug()<<"鏈表是否包含8:"<<list.contains(8);
qDebug()<<"鏈表是否包含5:"<<list.contains(5);

4.修改鏈表中的元素

可以使用replace( )方法修改,也可也使用下標(biāo)賦值修改

QList<int>list;
list<<1<<2<<3<<4<<5<<100;
list.replace(3,66); //第一個(gè)參數(shù)表示要修改的位置,第二個(gè)參數(shù)表示要修改的值
list[1]=100;    //直接通過下標(biāo)賦值
qDebug()<<list;

5.刪除元素 

removeFirst( );//刪除第一個(gè)元素

removeLast( );//刪除最后一個(gè)元素

removeAt( int );//刪除指定位置元素

removeOne( ) ;//刪除指定 的元素

QList<int>list;
list<<1<<2<<3<<4<<5<<100;
qDebug()<<"刪除前:"<<list;
list.removeFirst();//刪除第一個(gè)元素
list.removeLast();//刪除最后一個(gè)元素
list.removeAt(3);//刪除指定位置的元素
list.removeOne(5);//刪除指定的元素
qDebug()<<"刪除后:"<<list;

6.鏈表清空

使用clear( )方法可以清空鏈表 

QList<int>list;
list<<1<<2<<3<<4<<5<<100;
qDebug()<<"鏈表:"<<list;
list.clear();
qDebug()<<"清空鏈表:"<<list;

7.鏈表遍歷

1)Java風(fēng)格的讀寫迭代器遍歷

使用QMutableListIterator<T>讀寫迭代器遍歷。迭代器初始化時(shí)只需將要遍歷的鏈表按構(gòu)造函數(shù)傳入即可。調(diào)用迭代器的insert( )方法可以向鏈表中插入元素,每插入一個(gè)元素,迭代器索引的位置也跟著指向下一個(gè)位置。

toBack( )方法可使迭代器指向鏈表最后一個(gè)元素的下一個(gè)位置,

toFrount( )方法可使迭代器指向第一個(gè)元素的前一個(gè)位置,

hasPrevious( )方法可判斷前一個(gè)位置是否有元素,

hasNext( )方法可判斷下一個(gè)位置是否有元素,

previous( )方法可以返回前一個(gè)位置的元素,并使迭代器指向的位置向前移動(dòng)

next( )方法可以返回下一個(gè)位置的元素,并使迭代器指向的位置向下移動(dòng)

QList<int> monList;
//讀寫迭代器
QMutableListIterator<int> it_mrw(monList);
for(int i=1;i<=12;++i){
    it_mrw.insert(i);   //迭代器插入元素,并且迭代器索引的位置也跟著變化
}
//反向遍歷
qDebug()<<"反向遍歷:";
for(it_mrw.toBack();it_mrw.hasPrevious();){
    qDebug()<<it_mrw.previous();//迭代器向前索引,并返回值
}
qDebug()<<"正向遍歷:";
//正向遍歷
for(it_mrw.toFront();it_mrw.hasNext();){
    qDebug()<<it_mrw.next();
}

通過迭代器修改鏈表元素

使用remove( )方法可以移除迭代器當(dāng)前指向位置的元素,使用setValue(T)可以修改迭代器當(dāng)前指向位置的元素。

QList<int> monList;
//讀寫迭代器
QMutableListIterator<int> it_mrw(monList);
for(int i=1;i<=12;++i){
    it_mrw.insert(i);   //迭代器插入元素,并且迭代器索引的位置也跟著變化
}
qDebug()<<"鏈表值為:"<<monList;
for(it_mrw.toFront();it_mrw.hasNext();){
    //如果是0就刪除
    int month = it_mrw.next();
    if(month==1){
        it_mrw.remove();
    }
    //如果是11,就將該位置元素變成12
    if(month==11){
        it_mrw.setValue(12);
    }
}
qDebug()<<"修改后的值為:"<<monList;

只讀迭代器

QListIterator<T>迭代器是一種只讀迭代器,這種迭代器只能訪問鏈表元素,而不可以修改。

QList<int> monList;
//讀寫迭代器
QMutableListIterator<int> it_mrw(monList);
for(int i=1;i<=12;++i){
    it_mrw.insert(i);   //迭代器插入元素,并且迭代器索引的位置也跟著變化
}
//只讀迭代器
QListIterator<int> it_mr(monList);
//正向遍歷
for(it_mr.toFront();it_mr.hasNext();){
    qDebug()<<it_mr.next();
}
//反向遍歷
for(it_mr.toBack();it_mr.hasPrevious();){
    qDebug()<<it_mr.previous();
}

2)STL迭代器

QList<T>::iterator是 一種可讀寫的迭代器,使用時(shí)只需按照C++的操作方式即可。

QList<int> numList;
numList<<1<<2<<3<<4<<5;
QList<int>::iterator it_numRw;
it_numRw=numList.begin();
for(;it_numRw!=numList.end();++it_numRw){
    qDebug()<<*it_numRw;
}

使用只讀迭代器QList<int>::const_iterator遍歷遍歷鏈表。注意在初始化和判斷終止條件時(shí),要使用constBegin( )constEnd( )初始和判斷

QList<int> numList;
numList<<1<<2<<3<<4<<5;
QList<int>::const_iterator it_numR;
it_numR=numList.constBegin();
for(;it_numR!=numList.constEnd();++it_numR){
    qDebug()<<*it_numR;
}

QLinkedList<T>

 QLinkedList的操作與QList操作大致相同,這里就不多介紹,只列一些初始化和遍歷的操作

QLinkedListIterator<QString> it_wr(weekList);
qDebug()<<"正向遍歷:";
for(it_wr.toFront();it_wr.hasNext();){
    qDebug()<<it_wr.next();
}
 
QMutableLinkedListIterator<QString>it_wrw(weekList);
for(it_wrw.toFront();it_wrw.hasNext();){
    QString day=it_wrw.next();
    if(day == "星期3"){
        it_wrw.setValue("星期三");
    }
    if(day =="星期5"){
        it_wrw.remove();
    }
    if(day=="星期4"){
        it_wrw.insert("星期四");
    }
}
qDebug()<<"修改后正向遍歷:";
for(it_wrw.toFront();it_wrw.hasNext();){
    qDebug()<<it_wrw.next();
}

到此這篇關(guān)于Qt中QList與QLinkedList類的常用方法總結(jié)的文章就介紹到這了,更多相關(guān)Qt QList QLinkedList內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++超詳細(xì)實(shí)現(xiàn)堆和堆排序過像

    C++超詳細(xì)實(shí)現(xiàn)堆和堆排序過像

    堆是計(jì)算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱,通常是一個(gè)可以被看做一棵完全二叉樹的數(shù)組對(duì)象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。本文將通過圖片詳細(xì)介紹堆排序,需要的可以參考一下
    2022-06-06
  • C++浮點(diǎn)數(shù)類型詳情

    C++浮點(diǎn)數(shù)類型詳情

    這篇文章主要介紹了C++浮點(diǎn)數(shù)類型,浮點(diǎn)數(shù)是C++的第二組基本類型,它能夠表示帶小數(shù)部分的數(shù)字。不僅如此,浮點(diǎn)數(shù)的范圍也比int更大,可以表示更大范圍的數(shù)字。下面來我們大家一起來學(xué)習(xí)學(xué)習(xí)內(nèi)容
    2021-11-11
  • C語言使用回溯法解旅行售貨員問題與圖的m著色問題

    C語言使用回溯法解旅行售貨員問題與圖的m著色問題

    回溯法即是在按條件搜索走不通的情況下退回再選擇其他路線的方法,這里我們來看C語言使用回溯法解旅行售貨員問題與圖的m著色問題的方法示例:
    2016-07-07
  • C語言創(chuàng)建windows窗口實(shí)例

    C語言創(chuàng)建windows窗口實(shí)例

    這篇文章主要介紹了C語言創(chuàng)建windows窗口實(shí)例,本文直接給出實(shí)現(xiàn)代碼,同時(shí)講解了編碼的步驟,需要的朋友可以參考下
    2015-04-04
  • C++ 操作系統(tǒng)內(nèi)存分配算法的實(shí)現(xiàn)詳解

    C++ 操作系統(tǒng)內(nèi)存分配算法的實(shí)現(xiàn)詳解

    本文主要介紹了在動(dòng)態(tài)分區(qū)管理方式下采用不同的分配算法實(shí)現(xiàn)主存分配和實(shí)現(xiàn)主存回收,旨在幫助學(xué)生理解在動(dòng)態(tài)分區(qū)管理方式下應(yīng)怎樣實(shí)現(xiàn)主存空間的分配和回收。感興趣的可以了解一下
    2021-11-11
  • 零基礎(chǔ)學(xué)習(xí)C/C++需要注意的地方

    零基礎(chǔ)學(xué)習(xí)C/C++需要注意的地方

    這篇文章主要介紹了零基礎(chǔ)學(xué)習(xí)C/C++需要注意的地方,文中講解非常細(xì)致,供大家參考和學(xué)習(xí),想要學(xué)習(xí)C/C++的可以閱讀此文
    2020-06-06
  • C++類和對(duì)象之類的6個(gè)默認(rèn)成員函數(shù)詳解

    C++類和對(duì)象之類的6個(gè)默認(rèn)成員函數(shù)詳解

    類是對(duì)某一事物的抽象描述,具體地講類是C++中的一種構(gòu)造的數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于C++類和對(duì)象之類的6個(gè)默認(rèn)成員函數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • C語言用遞歸函數(shù)對(duì)素?cái)?shù)進(jìn)行判斷流程

    C語言用遞歸函數(shù)對(duì)素?cái)?shù)進(jìn)行判斷流程

    素?cái)?shù)判斷是編程語言學(xué)習(xí)過程中一個(gè)老生常談的話題,而它的實(shí)現(xiàn)也有多種算法,包括經(jīng)典的試除法(以及試除法的幾種優(yōu)化),進(jìn)階的素?cái)?shù)表篩選法,埃拉托斯特尼篩法和歐拉篩法(以及它們的優(yōu)化)等。對(duì)以上算法感興趣的朋友們,不妨搜索“素?cái)?shù)判斷的N種境界”來學(xué)習(xí)了解
    2022-09-09
  • c++數(shù)組排序的5種方法實(shí)例代碼

    c++數(shù)組排序的5種方法實(shí)例代碼

    大家還在為大小排序而煩惱嗎?今天讓我我大家解決這個(gè)問題吧,下面這篇文章主要給大家介紹了關(guān)于c++數(shù)組排序的5種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • C++常量指針,指針常量,指向常量的常指針詳解

    C++常量指針,指針常量,指向常量的常指針詳解

    剛接觸到指針時(shí),關(guān)于C++常量指針,指針常量,指向常量的常指針容易混淆,所以整理下,希望能夠幫助自己也幫助到大家
    2021-10-10

最新評(píng)論

扎赉特旗| 竹山县| 绵阳市| 日喀则市| 房产| 商洛市| 奉新县| 宜兰县| 马边| 东莞市| 定西市| 东莞市| 凉城县| 嘉鱼县| 突泉县| 镇平县| 澎湖县| 江北区| 德江县| 休宁县| 四会市| 沐川县| 江口县| 晴隆县| 东方市| 青岛市| 锡林浩特市| 铁力市| 民县| 谢通门县| 五台县| 延长县| 阳江市| 龙游县| 西青区| 柳江县| 安泽县| 金堂县| 东辽县| 渝北区| 疏附县|