Qt | 关于容器类的一些总结

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 学习使用Qt的容器类。

前言:

之前面试被问过一个问题,关于数据结构的:

问题:“你知道的数据结构有哪些?它们在实际程序中有哪些应用?”

答案: 数据结构分为线性结构和非线性结构,按照存储方式线性结构又分为顺序结构和链式结构,程序中常见的线性结构包括:数组、队列、链表、栈等。程序中常见的非线性结构包括二维数组、多维数组、树、图等。

容器的分类:

顺序容器:

QList、 QLinkedList、QVector、QStack和QQueue。因为这些容器中的数据都是一个接一个线性存储的,所以成为顺序容器。

  • QList: 是目前最常用的容器类。它存储了给定类型的值的一个列表,这些值可以通过索引访问。在QList的内部是通过使用数组实现的,以确保进行快速的基于索引访问。它的一些方法:QList::append()--在列表的尾部添加项目;QList::prepend()--在列表的头部添加项目;QList::insert()--在列表的中间插入项目。常用的QStringList就继承自QList<QString>。
  • QLinkedList: 它和QList基本相同,区别在于:QLinkedList使用迭代器访问项目,而QList一般使用整数索引访问项目;在向一个很大的列表中间插入项目时,QLinckedList比QList拥有更好的性能。(注意: 当迭代器指向QLinckedList的一个项目后,只要这个项目还存在,那么迭代器就依然有效;而当迭代器指向QList中的一个项目后,如果QList进行了插入或者删除操作,这个迭代器就无效了。)
  • QVector: 占用连续的内存控件存储给定类型的值的一个数组。在vector的前面或者中间插入项目是非常缓慢的,因为这样可能导致大量的项目在内存中移动一个位置。
  • QStack: 它是QVector的一个便捷子类,提供了后进先出语义。添加了push()pop()、和top() 等函数。
  • QQueue: 它是QList的一个便捷子类,提供了先进先出语义。添加了enqueue()dequeue()head() 等函数。

关联容器:

QMap、QMultiMap、QHash、QMultiHash和QSet。因为这些容器存储的是<键、值>对,比如QMap<Key, T>,所以被称为关联容器。

  • QMap: 它提供了一个字典(关联数组),将Key类型的键值映射到值上。一般一个键关联单一的一个值。QMap使用键顺序来存储它的数据(自动根据键的顺序进行排序);如果不关心存储顺序,还可以使用QHash来代替它,因为QHash速度更快。
  • QMultiMap: 它是QMap的一个便捷类,提供了实现多值映射的接口函数,例如一个键可以关联多个值
  • QHash: 它与QMap拥有基本相同的接口,但是它的查找速度更快。QHash的数据是以任意的顺序存储的。
  • QMultiHash: 它是QHash的一个便捷类,提供了实现多值散列的接口函数。
  • QSet: 它提供了一个可以快速查询单值的数学集。
目录
相关文章
|
1月前
|
监控 安全 Linux
Qt 文件类实战:解锁文件操作的无限可能
Qt 文件类实战:解锁文件操作的无限可能
48 1
|
3月前
Qt3个窗口类的区别
一个普通的窗口,不包含菜单栏、状态栏,除了登录界面,新建项目时建议使用QWidget,因为大部分的窗口可能都要做成无边框窗口,需要自定义标题栏,实现拉伸等;QMainWindow使用的场景不多。:对话框,常用来做登录窗口、弹出窗口(例如设置界面):包含菜单栏、工具栏、状态栏。
38 0
|
3月前
Qt提升控件类为自定义类
Qt提升控件类为自定义类
|
3月前
|
安全 Java 编译器
容器【泛型类、泛型接口、泛型方法 、泛型方法与可变参数 】(一)-全面详解(学习总结---从入门到深化)
容器【泛型类、泛型接口、泛型方法 、泛型方法与可变参数 】(一)-全面详解(学习总结---从入门到深化)
27 0
|
23天前
qt开发使用camera类获取摄像头信息并拍照保存
qt开发使用camera类获取摄像头信息并拍照保存
|
30天前
|
存储 安全 算法
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
48 1
|
1月前
|
缓存 人工智能 定位技术
探究Qt Quick之Overlay类的魅力(二)
探究Qt Quick之Overlay类的魅力
55 0
|
1月前
|
存储 搜索推荐 UED
探究Qt Quick之Overlay类的魅力(一)
探究Qt Quick之Overlay类的魅力
66 0
|
1月前
|
消息中间件 Linux API
跨进程通信设计:Qt 进程间通讯类全面解析
跨进程通信设计:Qt 进程间通讯类全面解析
80 0
|
1月前
|
域名解析 缓存 网络协议
探索Qt 网络编程:网络地址与服务类全解析
探索Qt 网络编程:网络地址与服务类全解析
55 0

推荐镜像

更多