QList类 QLinkedList类 QVector类
QList是最常用的容器类。QList 以列表形态存储并管理数据,并能进行基于快速索
引的访问,也可以进行快速的数据删除操作。
QLinkedList是一个链式列表,不能使用下标访问,与 QList 相比,当对一个很大的
列表进行插入操作时,QLinkedList 更高效。
QVector 在相邻的内存中存储给定数据类型 T 的一组数据。
QList的具体用法:
添加元素:
QList<int> list;
//添加元素
list << 1 << 2 << 3 << 4
<< 5 << 6 << 7 << 8;
list << 9;
list.append(10); //在尾部添加元素
list.prepend(0); //在头添加元素
list.insert(1,11); //在指定位置添加元素
qDebug() << list;
找查元素:
qDebug() << "list第3个元素:" << list.at(2);
qDebug() << "list第3个元素:" << list[2];
qDebug() << "list有0:" << list.contains(0);
qDebug() << "list的大小:" << list.size();
修改元素
list.replace(5,12);
list[0] = 100;
qDebug() <<"修改元素后:" << list;
删除第一个元素:
list.removeFirst();
删除最后一个元素:
list.removeLast();
删除指定位置的元素:
list.removeAt(2);
删除指定的元素:
list.removeOne(99);
清空列表:
list.clear();
遍历:
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)
{
*it_numRW = *it_numRW * 10;
qDebug() << *it_numRW;
}
//只读迭代器
QList<int>::const_iterator it_numR;
it_numR = numList.constBegin();
qDebug() << "STL风格只读正遍历:";
for(; it_numR != numList.constEnd();++it_numR)
qDebug() << *it_numR;
QLinkedList的具体用法:
添加元素:
QLinkedList<QString> weekList;
for(int j = 1; j < 8; j++)
weekList << QString("%1%2").arg("星期").arg(j);
遍历:
//只读迭代器
QLinkedListIterator<QString> it_wr(weekList);
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();
}
qDebug() << "weekList修改数据后:";
for(it_wrw.toFront();it_wrw.hasNext();)
qDebug() << it_wrw.next();
for(it_wrw.toFront();it_wrw.hasNext();)
{
QString day = it_wrw.next();
if(day == "星期4")
it_wrw.insert("星期五");
}
qDebug() << "添加星期五后遍历:";
for(it_wrw.toFront();it_wrw.hasNext();)
qDebug() << it_wrw.next();
QVector的具体用法:
添加元素:
QVector<QString> weekVector;
weekVector << "星期一";
weekVector << "星期二" <<"星期三";
weekVector.append("星期四");
weekVector.prepend("星期五");
weekVector.insert(0,"星期天");
qDebug() << weekVector;
修改元素:
weekVector.replace(0,"星期日");
删除元素:
weekVector.remove(0);
weekVector.removeAll();
访问,查询:
qDebug() << weekVector[0] << weekVector[1];
qDebug() << "星期六是否在其中:" << weekVector.contains("星期六");
遍历:
//只读迭代器
QVectorIterator<QString> it_sr(weekVector);
for(it_sr.tofont();it_sr.hasNext();)
qDebug() << it_sr.next();
//读写迭代
QMutableVectorIterator<QString> it_wrw(weekVector);
for(it_wrw.toFront();it_wrw.hasNext();)
{
QString day = it_wrw.next();
if(!QString::compare(s,"星期三"))
it_wrw.setValue("星期六");
}
qDebug() << "weeVector修改数据后:";
for(it_wrw.toFront();it_wrw.hasNext();)
qDebug() << it_wrw.next();
共有条评论 网友评论