Qt中QList与QLinkedList类的常用方法总结

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技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Java案例分享-集合嵌套

    Java案例分享-集合嵌套攻略 在Java编程中,集合嵌套是一种常见的技术,它允许我们在一个集合中存储另一个集合。这种嵌套的结构可以帮助我们更好地组织和管理数据。下面将详细介绍集合嵌套的完整攻略,并提供两个示例说明。 1. 集合嵌套的概念 集合嵌套是指在一个集合中存储另一个集合。在Java中,我们可以使用各种集合类来实现集合嵌套,如List、Set和Map等…

    other 2023年7月27日
    00
  • nginx相关

    nginx相关 Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。本文将探讨nginx相关的一些话题,包括安装、配置、优化和常见问题解决方案等。 安装nginx 安装Nginx非常简单,可以使用以下命令在大多数系统中安装: sudo apt-get install nginx 如果您使用的是不同的操作系统,请参…

    其他 2023年3月28日
    00
  • JDK SPI机制以及自定义SPI类加载问题

    JDK SPI机制是指,Java官方为了扩展软件功能的需求,提供了一种标准的service provider接口实现方式,即SPI(Service Provider Interface)。使用SPI机制,可以使软件工程师能够更加方便、统一地为软件编写扩展服务,并在运行时动态地加载实现类。 一、SPI机制的使用 1.定义接口 首先我们需要定义一个接口,例如我们…

    other 2023年6月25日
    00
  • 怎么查看自己MAC电脑上的IP地址和MAC地址

    Sure! Here is a step-by-step guide on how to view the IP address and MAC address on your Mac computer: Open the \”System Preferences\” by clicking on the Apple menu in the top-left…

    other 2023年7月30日
    00
  • java必学必会之static关键字

    当涉及到Java中的static关键字时,以下是一个完整的攻略,其中包含两个示例说明。 static关键字的概述 在Java中,static关键字用于声明静态成员,即与类相关而不是与实例相关的成员。静态成员属于类本身,而不是类的实例。可以在类的任何地方使用static关键字,包括变量、方法和代码块。 示例1:静态变量 class MyClass { stat…

    other 2023年8月10日
    00
  • Mysql 8.0解压版下载安装以及配置的实例教程

    MySQL 8.0解压版下载安装以及配置的实例教程 本教程将详细介绍如何下载、安装和配置MySQL 8.0解压版。MySQL是一个流行的开源关系型数据库管理系统,提供了稳定可靠的数据存储和管理功能。 步骤1:下载MySQL 8.0解压版 首先,访问MySQL官方网站(https://www.mysql.com/)并导航到下载页面。在下载页面中,找到MySQL…

    other 2023年8月15日
    00
  • MAC地址与IP地址绑定策略的破解

    MAC地址与IP地址绑定策略的破解攻略 1. 理解MAC地址与IP地址绑定策略 MAC地址(Media Access Control Address)是一个唯一的硬件地址,用于标识网络设备。IP地址(Internet Protocol Address)是一个用于在网络中标识设备的逻辑地址。MAC地址与IP地址绑定策略是一种安全措施,用于限制特定MAC地址只能…

    other 2023年7月30日
    00
  • 正则表达式模式匹配字符串基础知识

    正则表达式模式匹配字符串基础知识 正则表达式是一种可以用于匹配字符串的模式,它可以用于搜索、替换和验证输入的文本内容。本文将详细讲解正则表达式模式匹配字符串的基础知识,包括正则表达式语法、常用元字符和模式示例等。 正则表达式语法 正则表达式是由普通字符和元字符组成的模式,用于匹配字符串中的文本内容。常见的正则表达式语法包括: 普通字符:表示文本中的普通字符,…

    other 2023年6月20日
    00
合作推广
合作推广
分享本页
返回顶部