QList< T>是最常用的容器类。QList以列表形态存储并管理数据,并能进行基于快速索引的访问,也可以进行快速的数据删除操作。继承自QList类的子类有QItemSelection、QQueue、QStringList、QTestEventList.可用运算符<< 、append()、prepend()进行添加元素,insert()进行插入。QList< T>维护了一个指针数组,数组元素指向每一个链表项,因此QList< T> 提供了基于下标的快速访问。Java风格迭代器迭代点位置:第一个列表项前、两个列表项中间、最后一个列表项之后。STL风格迭代器迭代点位置:直接指向列表项。
//定义List链表
QList list;
//添加元素
list <<1 <<2 <<3 <<4 <<5 <<6;
list <<7;
list.append(8);
list.prepend(0); //头部添加元素
list.insert(1,99);//指定位置插入元素
qDebug() << list;
//访问元素
qDebug() << list[2];
qDebug() << list.at(3);
//查找元素
qDebug() << "链表中是否有元素8: " < montList; //月份
QMutableListIterator it_mrw(montList);
//初始化数据
for(int i= 1; 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() << "月";
}
//java只读迭代器
QListIterator it_mr(montList);
for(it_mr.toFront(); it_mr.hasNext();){
qDebug() << "第" << it_mr.next() << "月";
}
//STL风格迭代器
QList numList;
numList <<11 <<22 <<33 <<44 <<55;
//读写方式访问
QList::iterator it_num = numList.begin();
for(;it_num != numList.end(); it_num++){
qDebug() << *it_num;
}
//只读方式访问
QList::const_iterator it_num_const = numList.constBegin();
for(;it_num_const != numList.constEnd(); it_num_const++){
qDebug() << *it_num_const;
}
QlinkedList< T>是一个链式列表,不能使用下标访问,与QList相比,当对一个很大的列表进行插入操作时,QlinkedList更高效。
java风格迭代器
QlinkedListweeklink; for(int i= 0;i <7 ;i++){ weeklink<< QString("%1%2").arg("星期").arg(i+1); } // qDebug() << weeklink[0]; //不支持下标访问 //java风格只读迭代器 QlinkedListIterator it_week(weeklink); for(it_week.hasPrevious(); it_week.hasNext();){ qDebug() << it_week.next(); } //java风格读写迭代器 QMutablelinkedListIterator it_wrw(weeklink); for(it_wrw.toFront(); it_wrw.hasNext();){ QString ret = it_wrw.next(); if(ret == "星期3"){ it_wrw.setValue("星期三"); //修改为星期三 } if(ret == "星期5"){ it_wrw.remove(); //删除星期5 } if(ret == "星期7"){ it_wrw.insert("星期八"); //插入元素 } } //修改数据后 for(it_wrw.toFront(); it_wrw.hasNext();){ qDebug() << it_wrw.next(); }
STL风格迭代器
QlinkedListweeklink; for(int i= 0;i <7 ;i++){ weeklink<< QString("%1%2").arg("星期").arg(i+1); } //STL风格只读迭代器 QlinkedList ::const_iterator it_week_const = weeklink.constBegin(); for(; it_week_const != weeklink.constEnd(); it_week_const++){ qDebug() << *it_week_const; } //STL风格读写迭代器 QlinkedList ::iterator it_week = weeklink.begin(); for(;it_week != weeklink.end(); it_week++){ if(*it_week == "星期1"){ *it_week = "星期一"; //修改元素 } qDebug() << *it_week; }



