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

联合容器和集合容器

  • 一.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.hqwc.cn/news/685502.html

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

相关文章

C#中字典Dictionary与自定义类型CustomType之间的转换

C#中字典Dictionary与自定义类型CustomType之间的转换 思路&#xff1a; 可以使用反射System.Reflection来获取类的具体属性&#xff0c; 属性名称就映射字典的键Key。 新建控制台程序DictionaryCustomClassConversionDemo 第一步、新建关键转换类ConversionUtil。 类Con…

智能创作时代:AI 如何重塑内容生成游戏规则

文章目录 前言一&#xff1a;自动化内容生成文章生成视频制作音频创作 二&#xff1a;内容分发与推广智能推荐系统社交媒体优化 三&#xff1a;内容分析与优化数据分析用户反馈质量控制 结语 前言 在数字化时代的浪潮中&#xff0c;内容生产与消费已成为信息传播的核心。随着人…

数据结构与算法学习笔记九-二叉树的链式存储表示法和实现(C语言)

目录 前言 1.二叉树的链式存储 2.二叉链表的表示和实现 1.定义 2.创建 4.中序遍历二叉树 5.后序遍历二叉树 6.后序遍历二叉树 7.完整代码 前言 这篇博客主要介绍二叉树的链式存储结构。 1.二叉树的链式存储 上篇文章中介绍了二叉树的顺序存储结构&#xff0c;在最坏的…

ESP32引脚入门指南(六):从理论到实践(UART)

ESP32开发板具有UART0、UART1和UART2三个UART接口&#xff0c;支持异步通信(RS232和RS485)和IrDA速率高达5mbps。这些接口提供了丰富的串行通信选项&#xff0c;允许与各种设备进行全双工通信。 UART接口概述与引脚配置 UART 是一种全双工通信协议&#xff0c;允许数据同时在…

UE4 3D文字自动换行

效果&#xff1a;3D文字超过5位自动换行 1.随意输入一段字符串测试&#xff0c;创建string临时变量&#xff0c;用于迭代存储字符串 2.当字符串遍历至第“换行长度”&#xff08;我这里是5&#xff09;位时&#xff0c;附加一次空行

企业信使运营管理平台功能介绍

企业信使运营管理平台是一种为企业提供内部协同、任务管理、沟通交流、文件共享等功能的综合性管理平台。该平台旨在提高企业内部的工作效率和沟通协作能力&#xff0c;提供便捷的工作管理工具&#xff0c;促进企业的业务发展。 内部协同功能 企业信使运营管理平台首先提供一种…

LM4562NA 直插DIP8双运放 音频hifi运算放大器

LM4562NA是一款高性能音频运算放大器&#xff0c;其应用领域主要集中在音频和声音处理方面&#xff0c;包括但不限于&#xff1a; 1. 专业录音设备&#xff1a;在录音棚、广播电台和电视台等专业环境中&#xff0c;用于信号放大和处理&#xff0c;确保高质量的声音录制和传输…

Flask 通过SQLAlchemy连接mySQL实现一个实用的用户管理功能

Flask 通过SQLAlchemy连接mySQL实现一个实用的用户管理功能 安装配置 首先确保已经安装如下程序&#xff1a; flask&#xff1a;用于构建web应用程序。flask-sqlalchemy&#xff1a;用于在 Flask 中连接 MySQL 数据库&#xff0c;通过pip install flask-sqlalchemy安装。pym…

无需公网IP、无需云服务器,异地组网实现远程直连NAS、游戏联机

手机图片、视频太多&#xff0c;存储空间不够用怎么办?出门在外无法直连家中NAS&#xff0c;远程访问NAS速度慢&#xff1f;自建私有云、多媒体服务器&#xff0c;如何多人远程共享媒体资源&#xff1f;幻兽帕鲁、我的世界、泰拉瑞亚…局域网游戏&#xff0c;想远程多人联机&a…

The Sandbox 与 Cuisinia 合作推出全新体验!

与 Cuisinia 一起吃 Voxel&#xff01; 召唤所有美食家和游戏玩家&#xff01;准备好在 Cuisinia x The Sandbox Moodie 挑战赛中挑逗你的味蕾&#xff0c;考验你的技能&#xff01;加入我们的美味探险&#xff0c;品尝充满活力的泰国美食。 为什么选择 Cuisinia&#xff1f; …

百融云创回购计划加速落实 机构看好中长期吸引力

单日回购近400万港元B类股份&#xff0c;一站式服务的AI科技领航者百融云创&#xff08;百融云-W,6608.HK&#xff09;的回购计划正在加速落实。 此前&#xff0c;在百融云创2023年年度业绩公告的同时&#xff0c;该公司一并披露将在2024年不时在公开市场购回总金额不超过2.5亿…

知识蒸馏,需要合适的教师模型,学生模型,蒸馏数据,损失函数,训练策略,让小模型有大模型的知识

知识蒸馏使用的是Teacher—Student模型&#xff0c;其中teacher是“知识”的输出者&#xff0c;student是“知识”的接受者。知识蒸馏的过程分为2个阶段: 原始模型训练: 训练"Teacher模型", 它的特点是模型相对复杂&#xff0c;也可以由多个分别训练的模型集成而成。…