Qt中QList与QLinkedList类的常用方法总结
QList和QLinkedList是Qt中常用的两种容器类,它们都具有自己的特点和适用场景。这里我们来一一总结它们的常用方法。
QList
QList是一个动态数组,底层实现是一个指针数组,支持随机存取和快速插入删除操作,适合存储较小的元素。下面是QList的常用方法:
构造函数
QList<Type> list; // 默认构造函数,构造一个空链表
QList<const Type &> list(const QList<Type> &other); // 拷贝构造函数,构造一个other的拷贝
QList<Type> list(int size, const Type &value = Type()); // 构造一个包含size个value的QList
大小和容量
int size() const; // 返回链表中元素的个数
bool isEmpty() const; // 判断链表是否为空
void clear(); // 清空链表中的元素
void reserve(int size); // 提前分配size个空间,提高插入删除效率
int capacity() const; // 返回链表当前能够存储的元素个数
元素访问
Type &at(int i); // 返回索引i处的元素,并进行边界检查
const Type &at(int i) const; // 同上,但返回的元素是常量
Type &operator[](int i); // 重载[]运算符,返回索引i处的元素,不进行边界检查
const Type &operator[](int i) const; // 同上,但返回的元素是常量
Type &first(); // 返回第一个元素
const Type &first() const; // 同上,但返回的元素是常量
Type &last(); // 返回最后一个元素
const Type &last() const; // 同上,但返回的元素是常量
插入和删除
void append(const Type &value); // 在链表末尾添加一个元素
void prepend(const Type &value); // 在链表开头插入一个元素
void insert(int i, const Type &value); // 在索引i处插入一个元素
void removeAt(int i); // 删除索引i处的元素
int removeAll(const Type &value); // 删除链表中所有值为value的元素,并返回删除数量
void removeFirst(); // 删除第一个元素
void removeLast(); // 删除最后一个元素
查找
int indexOf(const Type &value, int from = 0) const; // 从from索引开始查找第一个值为value的元素,返回其索引,未找到则返回-1
int lastIndexOf(const Type &value, int from = -1) const; // 从from索引开始查找最后一个值为value的元素,返回其索引,未找到则返回-1
bool contains(const Type &value) const; // 判断链表中是否存在值为value的元素
下面是一段使用QList的示例代码:
QList<int> list;
list.append(1);
list.append(2);
list.append(3);
list.prepend(0);
list.insert(2, 4);
list.removeAt(3);
for (int i = 0; i < list.size(); ++i) {
qDebug() << list[i];
}
if (list.contains(2)) {
list.removeAll(2);
}
QLinkedList
QLinkedList是一个双向链表,底层实现是每个节点记录前后指针,支持快速插入删除和迭代,适合存储较大的元素。下面是QLinkedList的常用方法:
构造函数
QLinkedList<Type> list; // 默认构造函数,构造一个空链表
QLinkedList<const Type &> list(const QLinkedList<Type> &other); // 拷贝构造函数,构造一个other的拷贝
大小和容量
int size() const; // 返回链表中元素的个数
bool isEmpty() const; // 判断链表是否为空
void clear(); // 清空链表中的元素
元素访问
Type &first(); // 返回第一个元素
const Type &first() const; // 同上,但返回的元素是常量
Type &last(); // 返回最后一个元素
const Type &last() const; // 同上,但返回的元素是常量
插入和删除
void append(const Type &value); // 在链表末尾添加一个元素
void prepend(const Type &value); // 在链表开头插入一个元素
void insert(iterator before, const Type &value); // 在before指针前插入一个元素
void remove(iterator pos); // 删除pos指针所指的元素
void removeFirst(); // 删除第一个元素
void removeLast(); // 删除最后一个元素
迭代器
iterator begin(); // 返回指向第一个元素的迭代器
const_iterator begin() const; // 同上,但返回的迭代器是常量
iterator end(); // 返回指向尾部的迭代器
const_iterator end() const; // 同上,但返回的迭代器是常量
iterator insert(iterator before, int n, const Type &value); // 在before指针前插入n个值为value的元素
QListIterator<Type> iterator(); // 返回一个QListIterator对象,用于对链表进行正序遍历
QMutableListIterator<Type> iterator(); // 返回一个QMutableListIterator对象,用于对链表进行修改
下面是一段使用QLinkedList的示例代码:
QLinkedList<QString> list;
list.append("World");
list.prepend("Hello");
list.insert(list.begin() + 1, "Qt");
list.removeLast();
for (QString str : list) {
qDebug() << str;
}
QLinkedListIterator<QString> iterator(list);
while (iterator.hasNext()) {
QString str = iterator.next();
if (str == "Hello") {
iterator.remove();
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Qt中QList与QLinkedList类的常用方法总结 - Python技术站