QList、QMap、QVector、QQueue、QStringList的使用

参考

原创:泡沫o0
Qt QList 详解:从底层原理到高级用法
深入剖析 Qt QMap:原理、应用与技巧
Qt QVector 详解:从底层原理到高级用法
Qt QQueue 详解:从底层原理到高级用法

QStringList详细介绍

一、QList

QList 是 Qt 提供的一种动态数组容器,它允许在运行时动态添加、删除和修改元素。QList 采用连续的内存块来存储数据,支持快速的随机访问和高效的内存使用。在 Qt 应用开发中,QList 是一种常见且实用的数据结构,可以用于各种场景,如列表视图、数据存储和传输等

1. QList 的应用场景

QList 适用于许多应用场景,以下是一些常见的例子:

  • 列表视图:在 Qt 的图形用户界面开发中,QList 可用于存储和管理列表视图(如 QListWidget 和 QListView)中的数据。QList 提供了简单且高效的方法来添加、删除和更新列表项。
  • 数据存储和传输QList 可用于存储和传输各种类型的数据,如配置文件、用户设置、数据库查询结果等。QList 为这些场景提供了一种通用且高效的数据结构。
  • 实现算法和功能在实现算法和功能时,QList 可作为一个通用的数据容器,用于存储和操作数据。例如,QList 可用于实现排序算法、查找算法等。

2. QList的常用接口

QList 是 Qt 框架中的一个容器类,用于存储和管理对象列表。以下是 QList 的一些常用接口及其详细介绍:

  1. 构造函数和析构函数:

    • QList():构造一个空的列表;
    • QList(const QList &other):拷贝构造函数,用另一个 QList 对象来构造一个新的列表;
    • ~QList():析构函数,清除列表及其内容。
  2. 添加和插入元素:

    • void append(const T &value):在列表末尾添加一个元素;
    • void prepend(const T &value):在列表开头添加一个元素;
    • void insert(int i, const T &value):在索引 i 处插入一个元素。
#include "QListTest.h"
#include <QtWidgets/QApplication>
#include <QList>
#include <QDebug>
//防止中文乱码
#pragma execution_character_set("utf-8")

int main(int argc, char *argv[])
{
   
    QApplication a(argc, argv);

	//创建一个空的list
	QList<int> List;

	//添加元素(在列表末尾)
	List.append(1);
	List.append(2);
	List.append(3);
	List.append(4);
	List.append(5);

	//添加元素(在列表开头)
	List.prepend(6);

	//在指定索引插入一个元素,第一个是索引值,第二个是要插入的元素
	List.insert(0, 7);

	qDebug() << "list 的值为" << List;

    QListTest w;
    w.show();
    return a.exec();
}

在这里插入图片描述

  1. 删除元素:
    • void removeAt(int i):删除索引 i 处的元素;
    • T takeAt(int i):删除并返回索引 i 处的元素;
    • void removeFirst():删除并返回第一个元素;
    • void removeLast():删除并返回最后一个元素;
    • int removeAll(const T &value):删除所有与给定值相等的元素;
    • void clear():清空列表。
#include "QListTest.h"
#include <QtWidgets/QApplication>
#include <QList>
#include <QDebug>
//防止中文乱码
#pragma execution_character_set("utf-8")

int main(int argc, char *argv[])
{
   
    QApplication a(argc, argv);

	//创建一个空的list
	QList<int> List;

	//添加元素(在列表末尾)
	List.append(1);
	List.append(2);
	List.append(3);
	List.append(4);
	List.append(5);
	List.append(4);
	List.append(5);
	List.append(4);
	List.append(4);
	List.append(4);
	//添加元素(在列表开头)
	List.prepend(6);

	//在指定索引插入一个元素,第一个是索引值,第二个是要插入的元素
	List.insert(0, 7);

	qDebug() << "list 的值为" << List;

	List.removeAt(2);
	qDebug() << "删除第二个元素后list 的值为" << List;

	qDebug() << "删除并返回索引 1 处的元素" << List.takeAt(0);

	List.removeFirst();

	qDebug() << "删除并返回第一个元素" << List;

	List.removeLast();
	qDebug() << "删除并返回最后一个元素" << List;

	//删除所有和给定值相等的元素,并返回与给定值元素相等元素的个数
	qDebug() << "删除所有与给定值相等的元素" << List.removeAll(4);

	//清空列表
	List.clear();

    QListTest w;
    w.show();
    return a.exec();
}

在这里插入图片描述

  1. 访问和修改元素:
    • T &operator[](int i):返回索引 i 处的元素的引用;
    • const T &operator[](int i) const:返回索引 i 处的元素的常量引用;
    • T &at(int i):返回索引 i 处的元素的引用,但不允许修改;
    • T &first():返回列表中的第一个元素的引用;
    • const T &first() const:返回列表中的第一个元素的常量引用;
    • T &last():返回列表中的最后一个元素的引用;
    • const T &last() const:返回列表中的最后一个元素的常量引用。
#include "QListTest.h"
#include <QtWidgets/QApplication>
#include <QList>
#include <QDebug>
//防止中文乱码
#pragma execution_character_set("utf-8")

int main(int argc, char *argv[])
{
   
    QApplication a(argc, argv);

	//创建一个空的list
	QList<int> List;

	//1、添加和插入元素
	//添加元素(在列表末尾)
	List.append(1);
	List.append(2);
	List.append(3);
	List.append(4);
	List.append(5);

	qDebug() << "list 的值为" << List;

	//3、访问和修改元素
	qDebug() << "返回索引 i 处的元素的引用" << List.operator[](4);
	qDebug() << "返回索引 i 处的元素的引用,但不允许修改" << List.at(1);
	qDebug() << "返回列表中的第一个元素的引用" << List.first();
	qDebug() << "返回列表中的最后一个元素的引用;" << List.last();

	//清空列表
	List.clear();

    QListTest w;
    w.show();
    return a.exec();
}

在这里插入图片描述

  1. 列表大小和容量:
    • int size() const:返回列表中的元素个数;
    • bool isEmpty() const:判断列表是否为空;
    • int capacity() const:返回列表的容量;
    • void reserve(int size):预留给定大小的空间;
    • void squeeze():释放未使用的空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值