Qt中QList与QLinkedList类的常用方法总结

QList维护了一个指针数组,数组元素指向每一个链表项,因此QList 提供了基于下标的快速访问。QLinkedList是一个链式列表,不能使用下标访问,与QList相比,当对一个很大的列表进行插入操作时,QLinkedList更高效。

QList

1.链表插入元素

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

Qt中QList与QLinkedList类的常用方法总结_第1张图片

2.索引元素

使用下标或者at( )方法索引元素

QListlist;
list<<1<<2<<3<<4<<5<<100;
qDebug()<<"链表第三个元素:"< 
 

3.判断链表是否包含某个元素

QListlist;
list<<1<<2<<3<<4<<5<<100;
qDebug()<<"链表是否包含8:"< 
 

Qt中QList与QLinkedList类的常用方法总结_第2张图片

4.修改链表中的元素

可以使用replace( )方法修改,也可也使用下标赋值修改

QListlist;
list<<1<<2<<3<<4<<5<<100;
list.replace(3,66); //第一个参数表示要修改的位置,第二个参数表示要修改的值
list[1]=100;    //直接通过下标赋值
qDebug()< 
 

Qt中QList与QLinkedList类的常用方法总结_第3张图片

5.删除元素 

removeFirst( );//删除第一个元素

removeLast( );//删除最后一个元素

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

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

QListlist;
list<<1<<2<<3<<4<<5<<100;
qDebug()<<"删除前:"< 
 

Qt中QList与QLinkedList类的常用方法总结_第4张图片

6.链表清空

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

QListlist;
list<<1<<2<<3<<4<<5<<100;
qDebug()<<"链表:"< 
 

Qt中QList与QLinkedList类的常用方法总结_第5张图片

7.链表遍历

1)Java风格的读写迭代器遍历

使用QMutableListIterator读写迭代器遍历。迭代器初始化时只需将要遍历的链表按构造函数传入即可。调用迭代器的insert( )方法可以向链表中插入元素,每插入一个元素,迭代器索引的位置也跟着指向下一个位置。

toBack( )方法可使迭代器指向链表最后一个元素的下一个位置,

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

hasPrevious( )方法可判断前一个位置是否有元素,

hasNext( )方法可判断下一个位置是否有元素,

previous( )方法可以返回前一个位置的元素,并使迭代器指向的位置向前移动

next( )方法可以返回下一个位置的元素,并使迭代器指向的位置向下移动

QList monList;
//读写迭代器
QMutableListIterator it_mrw(monList);
for(int i=1;i<=12;++i){
    it_mrw.insert(i);   //迭代器插入元素,并且迭代器索引的位置也跟着变化
}
//反向遍历
qDebug()<<"反向遍历:";
for(it_mrw.toBack();it_mrw.hasPrevious();){
    qDebug()< 
 

Qt中QList与QLinkedList类的常用方法总结_第6张图片

通过迭代器修改链表元素

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

QList monList;
//读写迭代器
QMutableListIterator it_mrw(monList);
for(int i=1;i<=12;++i){
    it_mrw.insert(i);   //迭代器插入元素,并且迭代器索引的位置也跟着变化
}
qDebug()<<"链表值为:"< 
 

Qt中QList与QLinkedList类的常用方法总结_第7张图片

只读迭代器

QListIterator迭代器是一种只读迭代器,这种迭代器只能访问链表元素,而不可以修改。

QList monList;
//读写迭代器
QMutableListIterator it_mrw(monList);
for(int i=1;i<=12;++i){
    it_mrw.insert(i);   //迭代器插入元素,并且迭代器索引的位置也跟着变化
}
//只读迭代器
QListIterator it_mr(monList);
//正向遍历
for(it_mr.toFront();it_mr.hasNext();){
    qDebug()< 
 

Qt中QList与QLinkedList类的常用方法总结_第8张图片

2)STL迭代器

QList::iterator是 一种可读写的迭代器,使用时只需按照C++的操作方式即可。

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

Qt中QList与QLinkedList类的常用方法总结_第9张图片

使用只读迭代器QList::const_iterator遍历遍历链表。注意在初始化和判断终止条件时,要使用constBegin( )constEnd( )初始和判断

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

Qt中QList与QLinkedList类的常用方法总结_第10张图片

QLinkedList

 QLinkedList的操作与QList操作大致相同,这里就不多介绍,只列一些初始化和遍历的操作

QLinkedListIterator it_wr(weekList);
qDebug()<<"正向遍历:";
for(it_wr.toFront();it_wr.hasNext();){
    qDebug()<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()< 
 

Qt中QList与QLinkedList类的常用方法总结_第11张图片

到此这篇关于Qt中QList与QLinkedList类的常用方法总结的文章就介绍到这了,更多相关Qt QList QLinkedList内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(Qt中QList与QLinkedList类的常用方法总结)