【qt】联合容器和集合容器

news2024/10/5 19:17:37

联合容器和集合容器

  • 一.QMap
    • 1.应用场景
    • 2.添加数据
    • 3.删除数据
    • 4.修改数据
    • 5.查找数据
    • 6.数据个数
    • 7.是否包含
    • 8.返回所有的键名
  • 二.QHash
    • 1.应用场景:
  • 三.QMultiMap
  • 四.QMultiHash
  • 五.QSet
    • 1.应用场景
    • 2.交集
    • 3.并集
    • 4.差集
  • 总结:

一.QMap

1.应用场景

QMap的底层实现是用的平衡二叉树(红黑树),是一种有序的关联容器。
键可以理解为一种索引值,如现实生活中的身份证号,一个身份证号只能对应一个公民。
键与值是一种一一对应的关系。

QMap是以键值对的形式进行保存数据.只能一个键对应一个值。

2.添加数据

通过insert插入键值对

在这里插入图片描述
运行结果:
在这里插入图片描述

3.删除数据

用remove(键),对应的值也会一同被删除

在这里插入图片描述
运行结果:
在这里插入图片描述

4.修改数据

因为键与值是一一对应的,所以要修改值,可以通过重新插入覆写里面的值。

在这里插入图片描述

运行结果:
在这里插入图片描述

还可以通过找到键的迭代器然后进行修改

在这里插入图片描述

运行结果:
在这里插入图片描述

5.查找数据

因为QMap是有序的,所有我们可以同过[键]来查找值。
也可以通过value()这个接口来查找。

在这里插入图片描述
运行结果:
在这里插入图片描述

还可以通过find()查找,不过返回的是迭代器,需要*解引。

在这里插入图片描述
运行结果:
在这里插入图片描述

6.数据个数

count(),查键的个数只能是1。因为一对一关系。

在这里插入图片描述
运行结果:
在这里插入图片描述

7.是否包含

contains()

在这里插入图片描述
运行结果:
在这里插入图片描述

8.返回所有的键名

keys(),将建名保存在一个QList< QString >中。

在这里插入图片描述
运行结果:
在这里插入图片描述

二.QHash

1.应用场景:

QHash的底层实现是用的哈希表,也是存放的键值对,只不过是无序的。

查找的速度快,插入的速度也快

接口与QMap完全相同!

三.QMultiMap

Multi是多的意思,上面咱们不是说一个键只能对应一个值,这里则不然,一个键可以对应多个值,就像一个渣女的有多个男朋友一样
在这里插入图片描述
运行结果:
在这里插入图片描述
注意:

  • 此时就不能通过这种方式进行查找了
    在这里插入图片描述

  • 删除时如果不指定值,将全部删除相同的键
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

  • values可以得到一个键对应的所有的值
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

四.QMultiHash

和QMultiMap基本一样。

五.QSet

1.应用场景

集合大家应该都知道吧,我记得我是高一学过,我们就生活在一个个集合之中。

一个集合,不可能有两个一模一样的我,所以集合具有唯一性

底层的实现用的是哈希表,但是存储的数据不是键值对,而是一个值。

2.交集

接口几乎与哈希差不多,来讲讲不同的,首先并集
拿出我的小学的画画水平
在这里插入图片描述

用intersect(),对参数不会参数影响

来看看代码怎么实现:
在这里插入图片描述
运行结果:
addr2不变,addr变成两个所共有的
在这里插入图片描述

3.并集

就是将你我的都全部合起来。
在这里插入图片描述
代码:

用unite()

在这里插入图片描述
运行结果:
在这里插入图片描述

4.差集

就是我所特有的
在这里插入图片描述

subtract()

在这里插入图片描述
运行结果:
在这里插入图片描述

总结:

OK,到这里咱们的容器也就讲完了,接口确实很多,但是大部分都是通用的,因此不比害怕。
更重要的是知道我们该如何去选择合适的容器。

一般底层是类似数组的就查询快
底层实现里面有指针的就插入删除快
一般需要键值的就用联合容器
需要唯一性的就集合容器等等

谢谢你的阅读,希望能帮到你。
雷军是我偶像,永远相信美好的事情即将到来!在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【NPM】Nginx Proxy Manager 一键申请 SSL 证书,自动续期,解决阿里云SSL免费证书每3个月失效问题

文章目录 1、NPM 简介2、实战Step 1&#xff1a;环境搭建 也可以看作者安装笔记 Step 2&#xff1a;创建容器 2.1 在系统任意位置创建一个文件夹&#xff0c;此文档以~/nginx-proxy-manager为例。2.2 创建docker-compose.yaml2.3 启动NPM服务 Step 3&#xff1a;配置反向代理3…

Java入门基础学习笔记10——变量

变量的学习路径&#xff1a; 认识变量->为什么要用变量&#xff1f;->变量有啥特点&#xff1f;->变量有啥应用场景&#xff1f; 什么是变量&#xff1f; 变量是用来记住程序要处理的数据的。 变量的定义格式&#xff1a; 数据类型 变量名称 数据&#xff1b; 数…

JavaScript使用 BigInt

在 JavaScript 中&#xff0c;最大的安全整数是 2 的 53 次方减 1&#xff0c;即 Number.MAX_SAFE_INTEGER&#xff0c;其值为 9007199254740991。这是因为 JavaScript 中使用双精度浮点数表示数字&#xff0c;双精度浮点数的符号位占 1 位&#xff0c;指数位占 11 位&#xff…

NB-IoT电表抄表是什么?

1.技术性简述 NB-IoT是一种低功耗广域网络技术性&#xff0c;尤其适用于规模性联接、深层覆盖和低数据传输速率的使用场景&#xff0c;如远程控制电表抄表。相较于传统有线应无线通讯方法&#xff0c;NB-IoT具有更好的穿透性和更广的覆盖面积&#xff0c;即便在地下室或边远地…

纯 CSS 实现标签自动显示超出数量

现代 CSS 强大的令人难以置信。 这次我们来用 CSS 实现这样一个功能&#xff1a;有多个宽度不同的标签水平排列&#xff0c;当外层宽度不足时&#xff0c;会提示超出的数量&#xff0c;演示效果如下 如果让我用 JavaScript来实现估计都有点折腾&#xff0c;毕竟宽度都是动态的…

【vulhub靶场】Apache 中间件漏洞复现

【vulhub靶场】Apache 中间件漏洞复现 一、Apache HTTPD 换行解析漏洞&#xff08;CVE-2017-15715&#xff09;1. 漏洞详情2. 影响版本3. 漏洞复现 二、Apache多后缀解析漏洞&#xff08;apache_parsing_vulnerability&#xff09;1. 漏洞详情2. 漏洞复现 三、Apache HTTP Serv…

【CCF-CSP】202403-3 化学方程式配平

输入格式&#xff1a; 从标准输入读入数据。 输入的第一行包含一个正整数 n&#xff0c;表示需要判断的化学方程式的个数。 接下来的 n 行&#xff0c;每行描述了一个需要被配平的化学方程式。包含空格分隔的一个正整数和全部涉及物质的化学式。其中&#xff0c;正整数 m 表…

驱动开发-字符设备驱动的注册与注销

1.注册字符设备驱动 #include<fs.h> int register_chrdev(unsigned int major,const char *name,const struct file_operations *fops) 函数功能&#xff1a;注册字符设备驱动 参数&#xff1a;major&#xff1a;主设备号 major>0:静态指定主设备号&#xff0c;不…

创新指南|将会话式AI聊天机器人纳入PLG增长战略

想象一个繁荣的数字城市广场&#xff0c;志同道合的人们在这里分享他们的激情、经验和知识。想象一个将房东与旅行者、顾客与司机、人们与他们喜爱的品牌无缝连接起来的平台。在这个世界里&#xff0c;用户交流促进增长&#xff0c;社区成为推动力。 如果您的应用程序天生不符…

win10无法被远程桌面连接,Win10系统无法被远程桌面连接的原因有哪些

win10无法被远程桌面连接&#xff0c;Win10系统无法被远程桌面连接的原因有哪些&#xff1f; 先&#xff0c;我们需要明确Win10系统无法被远程桌面连接的可能原因。其中&#xff0c;最常见的原因包括&#xff1a;远程桌面功能未启用、网络连接问题、防火墙或安全软件设置不当、…

kubernetes删除命名空间下所有资源

kubernetes强制删除命名空间下所有资源 在 Kubernetes 中&#xff0c;当一个命名空间处于 Terminating 状态但不会完成删除过程时&#xff0c;通常是因为内部资源没有被正确清理。要强制删除这个命名空间及其所有资源&#xff0c;你可以采取以下步骤&#xff1a; 1. 确认命名空…

Rocketmq如何保证消息不丢失和幂等性

生产者 生产者通过RocketMQ提供的事务消息&#xff08;两阶段提交&#xff09;能保证消息的一致性。 第一阶段给Broker发送一个半事务消息&#xff0c;半事务消息是不能消费的消息&#xff0c;broker已经收到生产者发送的消息&#xff0c;但是并未收到生产者的二次确认&#x…

网络编程--tcp三次握手四次挥手

1、三次握手 &#xff08;1&#xff09;三次握手的详述 首先Client端发送连接请求报文&#xff0c;Server段接受连接后回复ACK报文&#xff0c;并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文&#xff0c;并分配资源&#xff0c;这样TCP连接就建立了。…

【计算机毕业设计】springboot果蔬种植销售一体化服务平台

伴随着我国社会的发展&#xff0c;人民生活质量日益提高。于是对果蔬种植销售一体化服务管理进行规范而严格是十分有必要的&#xff0c;所以许许多多的 信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套果蔬种植销售一体化服务平台&…

【LLM 论文】Chain-of-Verification:通过验证链来减少 LLM 幻觉

论文&#xff1a;Chain-of-Verification Reduces Hallucination in Large Language Models ⭐⭐⭐ arXiv:2309.11495 论文速读 LLM 由于不可避免地会产生幻觉&#xff0c;现有的研究主要鼓励 LLM 在产生 response 之前生成内部思想的推理链&#xff0c;或者通过 self-critique…

FreeRTOS任务调度器

目录 1、什么是任务调度器 2、FreeRTOS中的任务调度器 2.1 抢占式调度 2.2 时间片调度 2.3 协作式调度 3、任务调度案例分析 3.1 实验需求 3.2 CubeMX配置 3.3 代码实现 3.3.1 uart.c 重定向printf 3.3.2 打开freertos.c并添加代码 3.3.4 代码现象 1、什么是任务调度…

苹果电脑免费第三方软件CleanMyMac X2025电脑版垃圾清理软件神器

Mac电脑用户在长时间使用电脑之后&#xff0c;时常会看到“暂存盘已满”的提示&#xff0c;这无疑会给后续的电脑使用带来烦恼&#xff0c;那么苹果电脑暂存盘已满怎么清理呢&#xff0c;下面将给大家带来一些干货帮你更好地解决这个问题。 CleanMyMac X2024全新版下载如下: h…

【C++】list的使用与模拟实现

&#x1f525;个人主页&#xff1a;北辰水墨 &#x1f525;专栏&#xff1a;C学习仓 本节内容我们来讲解list的使用和模拟实现。 本节难点&#xff1a;list迭代器的模拟实现。 一、list的介绍&#xff1a; 列表 列表是一种序列容器&#xff0c;允许在序列的任何位置进行时间复…

winform植物大战僵尸

winform植物大战僵尸 植物大战僵尸源码 半成品 需要的拿去学习 登陆注册选择关卡 向日葵 豌豆射手 双枪豌豆射手 项目获取&#xff1a; 项目获取&#xff1a;typora: typora/img (gitee.com) 备用项目获取链接1&#xff1a;yifeiyixiang/kamo: 源码下载 (github.com) 备用…

Python图形复刻——绘制母亲节花束

各位小伙伴&#xff0c;好久不见&#xff0c;今天学习用Python绘制花束。 有一种爱&#xff0c;不求回报&#xff0c;有一种情&#xff0c;无私奉献&#xff0c;这就是母爱。祝天下妈妈节日快乐&#xff0c;幸福永远&#xff01; 图形展示&#xff1a; 代码展示&#xff1a; …