1.7容器类
QList是一种表示链表的模板类(Qt的一种泛型容器类)。它以链表方式存储一组值,并能对这组数据进行快速索引,还提供了快速插入和删除等操作。
QList与QLinkedList和QVector提供的操作极其相似,对大多数操作来说,我们用QList就可以了。其API是基于索引(index)的,因此用起来比QLinkedList更方便(QLinkedList的API是基于迭代器的)。QList比QVector更快,这是由它们在内存中的存储方式决定的。
1.7.1构建QList列表
使用QList类需要先添加#include <QList>头文件。
1.构建QString类型的列表,并输出其中的值:
/*构造一个列表类*/
QList<QString> my_list;
/*向列表中填充数据*/
my_list<<"123"<<"456"<<"789";
/*打印出列表中的数据*/
for(int i=0;i<my_list.count();i++)
{
//取出列表中指定的值
qDebug()<<my_list.at(i);
}
2.构建int类型的QList列表,并输出其中的值
/*构造一个列表类*/
QList<qint32> my_list;
/*向列表中填充数据*/
my_list<<123<<456<<789;
/*打印出列表中的数据*/
for(int i=0;i<my_list.count();i++)
{
//取出列表中指定的值
qDebug()<<my_list.at(i);
}
1.7.2插入数据
该函数用于在列表的结尾处插入数据。
void QList::append(const T & value)
示例:
QList<QString> list;
list.append("one");
list.append("two");
list.append("three");
// list: ["one", "two", "three"]
1.7.3搜索列表中数值出现的位置
lastIndexOf是从字符串末尾开始检索,检索到子字符,则返回子字符在字符串中的位置,(位置从前向后数,最小位为0,也就是从第0位开始算起)未检测到则返回-1。
int QList::lastIndexOf(const T & value, int from = -1) const
示例:
QList<QString> list;
list<< "A" << "B" << "C" <<"F"<< "B" << "A";
qDebug()<<list.lastIndexOf("B"); // returns 4 从末尾开始查找,返回第一次出现的位置。
qDebug()<<list.lastIndexOf("B", 4); // returns 4
qDebug()<<list.lastIndexOf("B", 2); // returns 1
qDebug()<<list.lastIndexOf("X"); // returns -1 没有就返回-1
1.7.4返回列表索引的数据
at成员函数用于取出列表中对应的数据,参数为数据的索引值!
const T & QList::at(int i) const
遍历输出列表中的数据:
QList<QString> my_list;
my_list<<"123"<<"456"<<"789";
for(int i=0;i<my_list.count();i++)
{
//取出列表中指定的值
qDebug()<<my_list.at(i);
}
输出结果:123 456 789
1.7.5其他常用函数接口
1.获取列表中节点的个数
int QList::count() const
2.判断列表是否为空
bool QList::isEmpty() const
3.删除指定数据值
int QList::removeAll(const T & value)
删除列表中出现的所有值并返回删除的条目的数量。
4.删除列表的第一项数据
void QList::removeFirst()
5.删除指定索引位置的值
void QList::removeAt(int i)