QLinkedList
时间: 2024-01-21 07:01:59 浏览: 28
QLinkedList 是 Qt 框架中的一个双向链表容器类,它提供了类似于 QList 的接口,可以用于存储和操作数据。与 QList 不同的是,QLinkedList 的元素在内存中是通过指针连接起来的,这意味着插入和删除元素的开销比 QList 小,但是访问元素的开销比 QList 大。QLinkedList 支持在链表的头部和尾部添加元素,以及在任意位置插入和删除元素。
使用 QLinkedList 需要包含头文件 <QLinkedList>,并使用 QLinkedList<T> 定义一个链表,其中 T 表示链表中元素的类型。例如,定义一个存储整数的链表可以如下所示:
```
QLinkedList<int> list;
```
常用的 QLinkedList 接口包括:
- append(const T& value):在链表的尾部添加一个元素。
- prepend(const T& value):在链表的头部添加一个元素。
- insert(iterator pos, const T& value):在迭代器 pos 所指向的元素之前插入一个元素。
- remove(iterator pos):删除迭代器 pos 所指向的元素。
- removeFirst():删除链表的头部元素。
- removeLast():删除链表的尾部元素。
- clear():清空链表中的所有元素。
- size():返回链表中元素的个数。
- isEmpty():判断链表是否为空。
- begin():返回指向链表第一个元素的迭代器。
- end():返回指向链表最后一个元素之后的迭代器。
- constBegin():返回指向链表第一个元素的常量迭代器。
- constEnd():返回指向链表最后一个元素之后的常量迭代器。
使用示例:
```cpp
#include <QLinkedList>
#include <QDebug>
int main()
{
QLinkedList<int> list;
list.append(1);
list.append(2);
list.append(3);
list.prepend(0);
list.insert(++list.begin(), 5);
for (QLinkedList<int>::iterator it = list.begin(); it != list.end(); ++it) {
qDebug() << *it;
}
list.removeFirst();
list.removeLast();
list.remove(++list.begin());
qDebug() << "Size: " << list.size();
qDebug() << "IsEmpty: " << list.isEmpty();
return 0;
}
```
输出结果:
```
0
5
1
2
3
Size: 3
IsEmpty: false
```