当前位置:网站首页>Qt | 关于容器类的一些总结
Qt | 关于容器类的一些总结
2022-08-02 14:41:00 【华为云】
前言:
之前面试被问过一个问题,关于数据结构的:
问题:“你知道的数据结构有哪些?它们在实际程序中有哪些应用?”
答案: 数据结构分为线性结构和非线性结构,按照存储方式线性结构又分为顺序结构和链式结构,程序中常见的线性结构包括:数组、队列、链表、栈等。程序中常见的非线性结构包括二维数组、多维数组、树、图等。
容器的分类:
顺序容器:
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: 它提供了一个可以快速查询单值的数学集。
边栏推荐
- Vest bag access process record
- “绿色低碳+数字孪生“双轮驱动,解码油气管道站升级难点 | 图扑软件
- Impulse response invariant method and bilinear transformation method for IIR filter design
- MySQL查询
- 2022-07-21 第六小组 瞒春 学习笔记
- 公司最大的内卷,是“管理错位”
- form的编辑与展示的切换(输入框,单选多选框,上传图片,颜色选择器)适用个人信息的展示与修改
- 什么是hashCode?
- PAT甲级 1145 哈希 - 平均查找时间
- 看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!
猜你喜欢

IPtables 和binlog

CNN flower classification

Impulse response invariant method and bilinear transformation method for IIR filter design

2022-07-18 第五小组 瞒春 学习笔记

MySQL 高级(进阶) SQL 语句 (一)

Mechanical keyboard failure

阿里面试败北:5种微服务注册中心如何选型?这几个维度告诉你

Typora永久使用,彻底解决This beta version of Typora is expired.

2022 VMware下载安装教程

2022-07-20 第六小组 瞒春 学习笔记
随机推荐
【 Leetcode string, the string transform/hexadecimal conversion 】 HJ1. The length of the string last word HJ2. Calculation of a certain number of characters appear HJ30. String merging processing
aPaaS低代码平台(二) | 快速构建业务模型
Selenium元素定位方法总结
IPtables 和binlog
什么是Nacos?
多线程------实际篇
容器中的Cgroup
【Frequency Domain Analysis】Spectral leakage, frequency resolution, picket fence effect
Wigner-Ville distribution for time-frequency analysis
5000mAh大电池!华为全新鸿蒙手机今晚亮相:更流畅更安全
【go-zero】go-zero 框架踩坑指南 Q&A (持续更新中)
(数学基础)第三章-3.2-标准记号和常用函数
Apache APISIX 2.15 版本发布,为插件增加更多灵活性
继续来学习有关淘宝的API接口的使用——获得店铺的所有商品 API
基于mobileNet实现狗的品种分类(迁移学习)
基于ip的证书
"No title"
PAT Class A 1130 Infix Expressions
form的编辑与展示的切换(输入框,单选多选框,上传图片,颜色选择器)适用个人信息的展示与修改
兆骑科创创业赛事活动路演,高层次人才引进平台