QT容器详解(一)——QList

一:QList

1.介绍

QList两种存储方式:

1)元素占用空间<指针占用空间(sizeof(T)

2)元素占用空间>指针占用空间时,QList会将每个元素new到堆上,即 QList 表示为 QList 的数组;

QList 容器在其生命周期内只会变大不会缩小,只有分配给另一个 QList 时析构函数和赋值运算符才会释放多余的空间。

2.基本操作

1> QList添加数据

/********添加数据**********/
QList list;//支持<<直接添加数据
list << "11" << "22";//11,22//insert任意位置插入数据
list.insert(1, "33");//11,33,22
list.insert(list.end(), "44");//11,33,22,44//append尾部添加数据
list.append("55");//11,33,22,44,55//prepend头部添加数据
list.prepend("66");//66,11,33,22,44,55//索引赋值,赋值操作不能超出索引范围
list[0] = "00";

2> QList查询数据

/********查询数据**********///支持索引访问
QString str = list[0];//66
for (int i = 0; i < list.size(); i++)
{qDebug() << list[i];
}//读写迭代器
QList::iterator it = list.begin();
for (; it < list.end(); it++)
{qDebug() << *it;
}//只读迭代器
QList::ConstIterator conit = list.begin();
for (; conit < list.end(); conit++)
{qDebug() << *conit;
}//QListIterator
QListIterator iterQ(list);
while (iterQ.hasNext())
{qDebug() << iterQ.next();//正向遍历
}
while (iterQ.hasPrevious())
{qDebug() << iterQ.previous();//反向遍历
}//QMutableListIterator可变迭代器
QMutableListIterator iterM(list);
while (iterM.hasNext())
{if (iterM.next() == "55"){//操作list}
}
iterM.toFront();//返回操作list后头部
while (iterM.hasNext())
{qDebug() << iterM.next();
}//只读访问优先使用at读取数据,相较于[]操作符速度更快,不用进行深拷贝
str = list.at(0);

3> QList删除数据

//仅删除
list.removeAt(0);
list.removeFirst();
list.removeLast();
list.removeAll("00");//删除并返回
list.takeAt(1);
list.takeFirst();
list.takeLast();

4> QList常用

list.indexOf("11", 0);//从索引0开始,返回11的索引
list.contains("11");//是否包含11
list.replace(0, "qq");//替换
list.swap(1, 2);//交换


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部