【Qt 开发基础体系】QMap 类和 QHash 类以及 QVector 类

文章目录

    • 1.QMap 详解
      • 1.1 QMap 的介绍
      • 1.2 QMap 的具体用法如下
      • 1.3 QmultiMap类
    • 2.QHash 详解
    • 3. QMap 和 QHash 的对比
    • 4. QVector 详解

1.QMap 详解

1.1 QMap 的介绍

🐧① QMap<key,T>提供一个从类型为Key的键到类型为T的值的映射。通常,QMap存储的数据形式是一个键对应一个值,并且按照键Key的次序存储数据。

🐧② 为了能够支持一键多值的情况,QMap提供QMap<key,T>:insertMulti ()QMap<key,T>::values ()函数。QMultiMap 类来实例化一个QMap对象。



1.2 QMap 的具体用法如下

  • 🍎插入信息的方式:
    在这里插入图片描述


  • 🍎删除信息,直接通过 key 键删除
    在这里插入图片描述


  • 🍎遍历 QMap 类的两种迭代方式
    在这里插入图片描述


  • 🍎通过 key来找T,或者通过T来找key,注意在QMap中,可以通过值来找键的哦🐧
    在这里插入图片描述


  • 🍎对T值进行修改,直接采取insert()进行插入覆盖即可
    在这里插入图片描述


  • 🍎查询是否包含某个键
    在这里插入图片描述


  • 🍎分别输出所有的 keyT值,放到 QList中进行输出
    在这里插入图片描述


1.3 QmultiMap类

  • 例如一个学生有学号、姓名、性别、年龄,这个时候就要用到一个键对应多个值的概念啦!直接用QmultiMap类即可。

在这里插入图片描述



2.QHash 详解

🐧① QHash<Key,T>具有与QMap几乎完全相同的API。QHash 维护着一张哈希表(Hash Table),哈希表的大小与QHash的数据项的数目相适应。

🐧② QHash任意的顺序组织它的数据。当存储数据的顺序无关紧要时,
建议使用QHash作为存放数据的容器。



🍎①QHash 存储数据,注意数据存入的顺序是任意的❗
在这里插入图片描述



🍎②用迭代器进行遍历 QHash
在这里插入图片描述



3. QMap 和 QHash 的对比

🐧Ⅰ. QHash 与 QMap 的功能差不多,但 QHash 的查找速度更快;

🐧Ⅱ.QMap 是按照键的顺序存储数据,而 QHash 是任意顺序存储的;

🐧Ⅲ.QMap 的键必须提供"<”运算符,而 QHash 的键必须提供“=="运算符和
一个名为 qHash()的全局散列函数。



4. QVector 详解

QVector <T>相邻的内存当中存储给定数据类型T的一组数值。在一个QVector 的前部或者中间位置进行插入操作的速度是很慢的,这是因为这样的操作将导致内存中的大量数据被移动,这是由QVector 存储数据的方式决定的。



🍎①插入数据,有两种方式
在这里插入图片描述



🍎②求出 QVector中元素的个数,以及遍历所有元素
在这里插入图片描述



🍎③元素的删除,可以控制删除一个区间的元素哦(只需要给出起始位置和删除的个数即可)🔍
在这里插入图片描述



🍎④判断容器是否包含某个元素
在这里插入图片描述


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/696814.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT】QT环境搭建

本专栏内容为&#xff1a;QT学习专栏 通过本专栏的深入学习&#xff0c;你可以了解并掌握QT。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;QT &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f…

车载电子电器架构 —— Vector对于车载以太网的解决方案(协议栈)

车载电子电器架构 —— Vector对于车载以太网的解决方案(协议栈) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你…

[算法][BFS][leetcode]994. 腐烂的橘子

题目地址 https://leetcode.cn/problems/rotting-oranges/description/ 错误解法 class Solution {public int orangesRotting(int[][] grid) {//层序遍历int ans 0;for (int i 0;i<grid.length;i) {for(int j 0;j<grid[0].length;j){boolean flag false;if(grid[i][j…

3.使用uView让tabbar更优雅

文章目录 1. 使用uView让tabbar更优雅1.1. 怎么才优雅&#xff1f;1.2. uView的tabbar合适吗&#xff1f;1.3. 引入项目过程1.3.1. 修改pages.json1.3.2. 把demo里面的pages先拷贝过来1.3.3. 引入tabbar的图片1.3.4. 运行 1.4. 我们自己的项目适配 1. 使用uView让tabbar更优雅 …

GEE数据集——东南亚区域油棕种种植分布(油棕榈树种植园的概率)数据集

森林数据伙伴关系围绕对全球商品驱动的森林砍伐、森林退化和恢复工作的全球监测&#xff0c;加强合作与应用。 世界各国政府和公司都承诺帮助制止砍伐森林和加快恢复&#xff0c;以避免气候变化带来的最坏影响&#xff0c;防止生物多样性丧失&#xff0c;保护森林对人类和自然…

汇昌联信电商:拼多多新手怎么做店铺的免费流量会慢慢起来?

在拼多多上开店&#xff0c;新手们往往面临着如何吸引免费流量的挑战。毕竟&#xff0c;流量是店铺生存和发展的血脉&#xff0c;没有流量&#xff0c;就没有销量&#xff0c;店铺也就失去了生命力。那么&#xff0c;作为拼多多新手&#xff0c;如何做才能让店铺的免费流量慢慢…

Dev-C++的下载和安装教程(超详细图文,小白入门)

Dev-C&#xff08;或者叫做Dev-Cpp&#xff09;是Windows环境下的一个轻量级C/C集成开发环境&#xff08;IDE&#xff09;。它是一款自由软件&#xff0c;遵守GPL许可协议分发源代码。 Dev-C集合了功能强大的源码编辑器、MingW64/TDM-GCC编译器、GDB调试器和AStyle格式整理器等…

通过 OmniPlan 4 解决项目管理中的实际问题

项目管理是一个复杂的过程&#xff0c;涉及规划、执行、监控和控制等多个方面。OmniPlan 4作为一款专业的项目管理软件&#xff0c;能够帮助项目经理和团队成员解决实际项目管理中遇到的各种问题。以下是通过OmniPlan 4解决一些常见项目管理问题的介绍。 OmniPlan 4 下载 https…

01-项目功能,架构设计介绍

稻草快速开发平台 开发背景就是通过此项目介绍使用SpringBoot Vue3两大技术栈开发一个拥有动态权限、路由的前后端分离项目&#xff0c;此项目可以继续完善&#xff0c;成为一个模板为将来快速开发做铺垫。 实现功能 开发流程 通过命令构建前端项目在VSCode中开发&#xff…

STK12 RPO模块学习(2)

一、Coast RPO Sequence 这个序列运行卫星直到它达到了下面三个条件之一。 1&#xff09;截至时间。2)圈数到达了限制。3&#xff09;其他条件&#xff0c;比如近地点。 默认情况下&#xff0c;Astrogator使用“Earth HPOP Default v10”预报器。你能够修改呈其他修改器。下…

【数据结构】详解队列

现在我们来掌握一下队列&#xff01;如果有对往期知识有不足地方&#xff0c;可翻阅之前文章哦&#xff01; 个人主页&#xff1a;小八哥向前冲~-CSDN博客 所属专栏&#xff1a;数据结构【c语言版】_小八哥向前冲~的博客-CSDN博客 栈和队列的实现其实都是对你顺序表和链表的检验…

Jmeter 性能-阶梯负载最终请求数

1、设置阶梯加压线程组请求参数 说明&#xff1a; 每隔2秒钟&#xff0c;会在1秒内启动5个线程 每次线程加载之后都会运行2s然后开始下一次线程加载 最终会加载50个线程并持续运行30s 50个线程持续运行30s后&#xff0c;会每隔2秒钟停止5个线程&#xff0c;剩余的线程继续负…