当前位置:网站首页>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: 它提供了一个可以快速查询单值的数学集。
边栏推荐
猜你喜欢
Impulse response invariant method and bilinear transformation method for IIR filter design
【Frequency Domain Analysis】Spectral leakage, frequency resolution, picket fence effect
How to check the WeChat applet server domain name and modify it
软件代码签名证书怎么申请
语音直播系统——做好敏感词汇屏蔽打造绿色社交环境
es6 循环,并终止循环
XGBoost 和随机森林在表格数据上优于深度学习?
2022 VMware下载安装教程
机械键盘失灵
一文让你快速写上扫雷游戏!童年的经典游戏,发给你的小女友让你装一波!!
随机推荐
codeforces Linova and Kingdom
IPtables 和binlog
Typora永久使用,彻底解决This beta version of Typora is expired.
2022-02-14 第五小组 瞒春 学习笔记
vite.config.ts introduces the `path` module Note!
2022-07-10 第五小组 瞒春 学习笔记
第六章-6.1-堆-6.2-维护堆的性质-6.3-建堆
2022-07-16 第五小组 瞒春 学习笔记
Traverse Heap PAT Class A 1155 Heap Path
初入c语言
中国服装行业已形成一套完整的产业体系
OneFlow源码解析:Op、Kernel与解释器
【Untitled】
js中的数组方法和循环
2022年低压电工考试试题及在线模拟考试
"No title"
【无标题】
CNN鲜花分类
阅读,是最便宜的高贵
mysql 索引使用与优化