QT中的容器

Qt中的容器

关于Qt中的容器类,下面我们来进行一个总结:

Qt的容器类比标准模板库(STL)中的容器类更轻巧、安全和易于使用。这些容器类是隐式共享和可重入的,而且他们进行了速度和存储的优化,因此可以减少可执行文件的大小。此外,他们还是线程安全的,也就是说他们作为只读容器时可被多个线程访问。

(隐式共享:是对象的管理方法。一个对象被隐式共享,只是传递该对象的一个指针给使用者,而不实际复制对象数据,只有在使用者修改数据时,才实质复制共享对象给使用者。)QtCreator中说明如下图:

一、顺序容器类

QList : 动态数组,支持快速的头部和尾部插入删除操作,以及通过索引访问元素。

QVector:类似于QList,但内部实现保证了元素在内存中连续存储,对于大数据量并且频繁随机访问时,可能有更好的性能表现。

QLinkedList: 双向链表,支持高效地在列表中间进行插入和删除操作,但不支持通过索引直接访问元素。

QStatck: 后进先出(LIFO)栈容器。

QQueue: 先进先出(FIFO)队列容器。

二、关联容器类

QSet: 集合容器,只包含唯一元素,不存储值对应的键

QMap: 键值对映射容器,键值对按键自动排序

**QMultimap:**QMap子类,提供定义关键字模式形态,基于多映射

QHash: 哈希表实现的键值对容器,提供常数时间复杂度的快速查找能力

**QMultiHash:**提供多个关键字模型

三、相应的迭代器类:

QtCreator中关于迭代器的说明如下图:

QPair: 一种轻量级容器,可以同时存储两个不同类型的对象,适用于函数返回多个值时的场景

QHashIterator: QHashIterator是用来遍历QHash中元素的迭代器类。使用QHashIterator的时候需要注意,只有在QHash不被改变的情况下才能使用它来遍历QHash,否则会导致程序崩溃或产生未定义的行为。

QMapIterator: 只读,无 setValue() 方法。

QMutableMapIterator: 可以修改,有 setValue()方法。

QMutableSetIterator: 用于迭代和修改QSet集合。它允许我们在迭代过程中添加、删除和修改集合中的元素。

QMutableListIterator: 用于在可变的QList容器上进行迭代操作。它提供了一组方法,允许我们在列表中插入、替换和删除元素。

QMutableLinkedListIterator: 简单来说就是可读可写的迭代器,一样支持前后迭代, hasNext() 前向遍历,hasPrevious() 反向遍历。

同时呢,用 remove() 删除节点,用 insert() 插入节点,用setValue()来修改节点值

参考文章:

1.Qt容器类总结 - 李家的小猴子 - 博客园Qt容器类总结 - 李家的小猴子 - 博客园

2.QT中的 容器(container)-大全_qt 容器-CSDN博客

3.Qt 容器类整理与使用_qt 有哪些常用的容器-CSDN博客

4.Qt的容器介绍_qt容器-CSDN博客

5.Qt容器类详解_Qt入门及实战宝典-CSDN专栏

相关推荐
优雅的小武先生5 小时前
QT中的按钮控件和comboBox控件和spinBox控件无法点击的bug
开发语言·qt·bug
Death2005 小时前
使用Qt进行TCP和UDP网络编程
网络·c++·qt·tcp/ip
海绵波波1077 小时前
Qt操作主/从视图及XML——实例:汽车管理系统
xml·qt·汽车
Fairy_sevenseven7 小时前
【二十八】【QT开发应用】模拟WPS Tab
开发语言·qt·wps
Death2008 小时前
Qt 中的 QListWidget、QTreeWidget 和 QTableWidget:简化的数据展示控件
c语言·开发语言·c++·qt·c#
niu_sama8 小时前
基于muduo库函数实现protobuf协议的通信
开发语言·qt
不写八个8 小时前
Qt教程(001):Qt概述与安装
开发语言·qt
Death2008 小时前
Qt 3D、QtQuick、QtQuick 3D 和 QML 的关系
c语言·c++·qt·3d·c#
一律清风18 小时前
QT-文件创建时间修改器
c++·qt
不知所云,19 小时前
qt cmake自定义资源目录,手动加载资源(图片, qss文件)
开发语言·qt