Qt QList和QLinkedList使用

文章目录

  • 1、QList
    • 1.1、链表基础使用(添加、修改、查找、删除)
    • 1.2、迭代器使用(STL风格,Java风格)
  • 2、QLinkedList

1、QList

1.1、链表基础使用(添加、修改、查找、删除)

// 链表初始化,添加元素
QList<int> list;
list<<1<<2<<3<<4;
list.prepend(0);
list.append(5);
qDebug()<<list;

// 查找元素
qDebug()<<"第三个元素:"<<list.at(2);
qDebug()<<"list有8:"<<list.contains(8);

// 修改元素,索引为3的位子修改为222
list.replace(3,222);
qDebug()<<list;

// 删除元素
list.removeAt(0);
list.removeFirst();
list.removeLast();
list.removeOne(8);

1.2、迭代器使用(STL风格,Java风格)

STL风格迭代器

QList<int> numList;
numList<<1<<2<<3<<4<<5<<6<<7;
// 读写迭代器
QList<int>::iterator it_num;
it_num = numList.begin();
for(;it_num!=numList.end();it_num++)
{
    *it_num = *it_num * 10;
    qDebug()<<*it_num;
}

// 只读迭代器
QList<int>::const_iterator it_numR;
it_numR = numList.constBegin();
for(;it_numR!=numList.constEnd();it_numR++)
    qDebug()<<*it_numR;

Java风格迭代器

QList<int> montList;
// 读写迭代器
QMutableListIterator<int> it_mrw(montList);
for(int i=0;i<12;i++)
    it_mrw.insert(i);
 // 初始化后,数据反遍历
for(it_mrw.toBack();it_mrw.hasPrevious();)
    qDebug()<<it_mrw.previous();
// 正常方式遍历
for(it_mrw.toFront();it_mrw.hasNext();)
    qDebug()<<it_mrw.next();

2、QLinkedList

STL风格迭代器

QLinkedList<QString> weekList;
for(int j=1;j<8;j++)
    weekList<<QString("%1%2").arg("星期").arg(j);
// STL风格迭代器
// 读写迭代器
QLinkedList<QString>::iterator it_wr = weekList.begin();
for(;it_wr!=weekList.end();it_wr++)
    qDebug()<<*it_wr;

// 只读迭代器
QLinkedList<QString>::const_iterator it_r = weekList.constBegin();
for(;it_r!=weekList.constEnd();it_r++)
    qDebug()<<*it_r;

Jave风格迭代器

 QLinkedList<QString> weekList;
 for(int j=1;j<8;j++)
     weekList<<QString("%1%2").arg("星期").arg(j);

 // Java风格迭代器读写
 QLinkedListIterator<QString> it_wr(weekList);
 for(it_wr.toFront();it_wr.hasNext();)
     qDebug()<<it_wr.next();

 // Java 风格只读迭代器
 QMutableLinkedListIterator<QString> it_wrw(weekList);
 for(it_wr.toFront();it_wr.hasNext();)
     qDebug()<<it_wr.next();
     

QLinkedList 类 不能通过索引访问元素 ,是更纯粹的链表,保存大量数据建议使用QLinkedList

你可能感兴趣的:(Qt,qt,c++,开发语言)