網站首頁 編程語言 正文
QList<T>維護了一個指針數組,數組元素指向每一個鏈表項,因此QList<T> 提供了基于下標的快速訪問。QLinkedList<T>是一個鏈式列表,不能使用下標訪問,與QList相比,當對一個很大的列表進行插入操作時,QLinkedList更高效。
QList<T>
1.鏈表插入元素
list<<1<<2<<3;
list.append(4);//鏈表頭部添加
list.prepend(0);//鏈表頭部添加
list.insert(5,10);
qDebug()<<list;
2.索引元素
使用下標或者at( )方法索引元素
QList<int>list;
list<<1<<2<<3<<4<<5<<100;
qDebug()<<"鏈表第三個元素:"<<list.at(2);
qDebug()<<"鏈表第二個元素:"<<list[1];
3.判斷鏈表是否包含某個元素
QList<int>list;
list<<1<<2<<3<<4<<5<<100;
qDebug()<<"鏈表是否包含8:"<<list.contains(8);
qDebug()<<"鏈表是否包含5:"<<list.contains(5);
4.修改鏈表中的元素
可以使用replace( )方法修改,也可也使用下標賦值修改
QList<int>list;
list<<1<<2<<3<<4<<5<<100;
list.replace(3,66); //第一個參數表示要修改的位置,第二個參數表示要修改的值
list[1]=100; //直接通過下標賦值
qDebug()<<list;
5.刪除元素?
removeFirst( );//刪除第一個元素
removeLast( );//刪除最后一個元素
removeAt( int );//刪除指定位置元素
removeOne( ) ;//刪除指定 的元素
QList<int>list;
list<<1<<2<<3<<4<<5<<100;
qDebug()<<"刪除前:"<<list;
list.removeFirst();//刪除第一個元素
list.removeLast();//刪除最后一個元素
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風格的讀寫迭代器遍歷
使用QMutableListIterator<T>讀寫迭代器遍歷。迭代器初始化時只需將要遍歷的鏈表按構造函數傳入即可。調用迭代器的insert( )方法可以向鏈表中插入元素,每插入一個元素,迭代器索引的位置也跟著指向下一個位置。
toBack( )方法可使迭代器指向鏈表最后一個元素的下一個位置,
toFrount( )方法可使迭代器指向第一個元素的前一個位置,
hasPrevious( )方法可判斷前一個位置是否有元素,
hasNext( )方法可判斷下一個位置是否有元素,
previous( )方法可以返回前一個位置的元素,并使迭代器指向的位置向前移動
next( )方法可以返回下一個位置的元素,并使迭代器指向的位置向下移動
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( )方法可以移除迭代器當前指向位置的元素,使用setValue(T)可以修改迭代器當前指向位置的元素。
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是 一種可讀寫的迭代器,使用時只需按照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遍歷遍歷鏈表。注意在初始化和判斷終止條件時,要使用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();
}
原文鏈接:https://blog.csdn.net/qq_54169998/article/details/128308244
相關推薦
- 2024-01-14 springboot-mybatis/JPA流式查詢
- 2022-07-02 Python列表1~n輸出步長為3的分組實例_python
- 2022-05-25 springboot踩坑日記Feign傳遞MultipartFile詳解
- 2022-08-01 C++簡單又好用的基本運算符重載_C 語言
- 2022-10-03 react項目升級報錯,babel報錯,.babelrc配置兼容等問題及解決_React
- 2022-08-05 Winform窗體中打開PDF文件的三種方式_C#教程
- 2022-09-26 go語言標準庫fmt包的一鍵入門_Golang
- 2023-10-17 npm 下載依賴項顯示proxy代理錯誤network ‘proxy‘ config is set
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支