Qlist增删改查
QList是最常用的容器类。QList 以列表形态存储并管理数据,并能进行基于快速索引的访问,也可以进行快速的数据删除操作。继承自 QList 类的子类有 QItemSelection、QQueue、QStringList、QTestEventList.
用运算符<< 、append()、prepend()进行添加元素,insert()进行插入。QList维护了一个指针数组,数组元素指向每一个链表项,因此 QList 提供了基于下标的快速访问。
QList<int> list;
//添加元素 0 3 1 2
list<<1;
list.append(2);//后面加
list.prepend(3);//前面加
list.insert(0,0);//设置位置加
qDebug() << list;
//找查元素
qDebug() << list.at(1);
qDebug() << list.contains(2);
qDebug() << list[3];
qDebug() << list.size();
//修改元素
list.replace(0,99);
list[1] = 88;
qDebug() << list;
//删除元素
list.removeFirst();//删除头
list.removeLast();//删除尾
list.removeAt(0);//删除第一个
list.removeOne(1);//删除值为1的元素
qDebug() << list;
list.clear();//清空元素
Qlist遍历方式
//java读写迭代器
qDebug() << "java读写迭代器";
QList<int> moutList;
QMutableListIterator<int> it_mrw(moutList);
for(int i = 0; i < 12; i++){
it_mrw.insert(i);
}
qDebug() << "Java反向遍历";
for(it_mrw.toBack();it_mrw.hasPrevious();){
qDebug() << it_mrw.previous();
}
qDebug() << "java正向遍历";
for(it_mrw.toFront();it_mrw.hasNext();){
qDebug() << it_mrw.next();
}
//修改值
for(it_mrw.toFront();it_mrw.hasNext();){
int mouth = it_mrw.next();
if(mouth == 10) it_mrw.remove();//删除
if(mouth == 9) it_mrw.setValue(90);//修改值
}
//java只读迭代器//遍历方法与读写一样
QListIterator<int> it_mr(moutList);
//STL风格迭代器
//读写
QList<int> numList;
numList<<1<<2<<3<<4<<5;
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_rnum;
it_rnum = numList.constBegin();
for(;it_rnum != numList.constEnd();++it_rnum){
qDebug() << *it_rnum;
}
QLinkedList
//不支持week[0]和.at(0)下标方式访问,内部无数组结构
QLinkedList<QString> week;
for(int i = 0; i < 8; i++){
week << QString("%1%2").arg("星期").arg(i);
}
//java风格只读
QLinkedListIterator<QString> it_r(week);
for(it_r.toFront();it_r.hasNext();){
qDebug() << it_r.next();
}
//java风格读写
QMutableLinkedListIterator<QString> it_rw(week);
for(it_rw.toFront();it_rw.hasNext();){
QString day = it_rw.next();
if(day == "星期4") it_rw.setValue("星期四");
if(day == "星期7") it_rw.remove();
if(day == "星期6") it_rw.insert("星期天");
}
qDebug() << "修改后";
for(it_rw.toFront();it_rw.hasNext();){
qDebug() << it_rw.next();
}
//STL风格读写
QLinkedList<QString>::iterator it_week;
it_week = week.begin();
for(;it_week != week.end();++it_week){
if(*it_week == "星期1") *it_week = "星期一";
qDebug() << *it_week;
}
//只读
QLinkedList<QString>::const_iterator it_rweek;
it_rweek = week.constBegin();
for(;it_rweek != week.constEnd();++it_rweek){
qDebug() << *it_rweek;
}