QT中的容器

发布于:2024-05-05 ⋅ 阅读:(26) ⋅ 点赞:(0)

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专栏