Qt QMultiMap

头图

QMultiMap

文章目录

  • QMultiMap
    • 摘要
    • QMultiMap
    • QMultiMap 特点
    • 代码示例

关键字: QtQMultiMap容器键值键值重复

摘要

今天在观摩小伙伴撸代码的时候,突然听到了QMultiMap自己使用Qt开发这么就,竟然都不知道,所以趁没有被人发现自己是个水货,赶紧补充一下知识点。今天就学习一下QMultiMap

QMultiMap

QMultiMap 是 Qt 框架中的一个容器类,用于存储键值对的多重映射。它可以存储多个具有相同键的值,并且可以按照键的顺序进行访问和遍历。

QMultiMap 提供了一系列的方法来操作和管理键值对。你可以使用 insert() 方法向 QMultiMap 中插入键值对,如果键已经存在,那么该值将会被添加到已有的键值对列表中。你还可以使用 remove() 方法来删除指定键值对,或者使用 clear() 方法来清空整个 QMultiMap。

QMultiMap 还提供了一些方便的方法来访问和遍历键值对。你可以使用 values() 方法获取指定键对应的所有值的列表,或者使用 keys() 方法获取所有键的列表。此外,你还可以使用 find() 方法来查找指定键对应的值,或者使用 contains() 方法来检查 QMultiMap 是否包含指定的键。

总之,QMultiMap 是一个非常实用的容器类,适用于需要存储多个具有相同键的值的场景。它提供了丰富的方法来操作和管理键值对,方便快捷地进行访问和遍历。

QMultiMap 特点

QMultiMap 的特点如下:

  1. 多重映射:QMultiMap 允许存储多个具有相同键的值。这意味着你可以将多个值与同一个键相关联,而不仅限于一个值。

  2. 键的顺序:QMultiMap 会按照键的顺序来存储键值对。这意味着你可以按照键的顺序进行访问和遍历,而不会丢失原始的键值对顺序。

  3. 动态大小:QMultiMap 的大小是动态的,可以根据需要进行扩展或收缩。你可以根据实际情况插入或删除键值对,而不需要提前指定容器的大小。

  4. 方便的插入和删除:QMultiMap 提供了方便的方法来插入和删除键值对。你可以使用 insert() 方法来插入键值对,如果键已经存在,那么该值将会被添加到已有的键值对列表中。你还可以使用 remove() 方法来删除指定键值对。

  5. 快速查找:QMultiMap 提供了快速查找指定键对应的值的方法。你可以使用 find() 方法来查找指定键对应的值,它会返回一个指向该值的迭代器。这样可以方便地进行值的查找和操作。

  6. 丰富的方法:QMultiMap 提供了丰富的方法来操作和管理键值对。除了插入、删除和查找方法之外,它还提供了许多其他方法,如清空整个容器、获取所有键的列表、获取指定键对应的所有值的列表等。

总之,QMultiMap 是一个灵活、方便和高效的容器类,适用于需要存储多个具有相同键的值,并按照键的顺序进行访问和遍历的场景。它提供了丰富的方法来操作和管理键值对,方便快捷地进行插入、删除、查找和遍历操作。

代码示例

#include <QCoreApplication>
#include <QMultiMap>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 创建一个 QMultiMap 对象QMultiMap<QString, int> multiMap;// 插入键值对multiMap.insert("Apple", 5);multiMap.insert("Banana", 3);multiMap.insert("Apple", 2);multiMap.insert("Orange", 4);// 输出原始的 QMultiMapqDebug() << "Original QMultiMap:";for (auto it = multiMap.constBegin(); it != multiMap.constEnd(); ++it) {qDebug() << it.key() << ":" << it.value();}// 修改键值对QString key = "Apple";int newValue = 10;auto range = multiMap.equal_range(key);for (auto it = range.first; it != range.second; ++it) {if (it.value() == 5) {it.value() = newValue;}}// 输出修改后的 QMultiMapqDebug() << "Modified QMultiMap:";for (auto it = multiMap.constBegin(); it != multiMap.constEnd(); ++it) {qDebug() << it.key() << ":" << it.value();}// 删除键值对key = "Banana";multiMap.remove(key);// 输出删除后的 QMultiMapqDebug() << "QMultiMap after removal:";for (auto it = multiMap.constBegin(); it != multiMap.constEnd(); ++it) {qDebug() << it.key() << ":" << it.value();}// 查找键值对key = "Orange";auto it = multiMap.find(key);if (it != multiMap.end()) {qDebug() << "Value for key" << key << ":" << it.value();} else {qDebug() << "Key" << key << "not found in QMultiMap";}return a.exec();
}

这个示例演示了如何使用 QMultiMap 进行增删改查操作。在这个示例中,我们创建了一个 QMultiMap 对象 multiMap,并使用 insert() 方法插入了几个键值对。然后,我们使用迭代器遍历 QMultiMap,并输出原始的 QMultiMap。

接下来,我们使用 equal_range() 方法找到键为 “Apple” 的所有键值对,并将值为 5 的修改为 10。然后,我们再次遍历 QMultiMap,并输出修改后的 QMultiMap。

然后,我们使用 remove() 方法删除键为 “Banana” 的键值对,并再次遍历 QMultiMap,并输出删除后的 QMultiMap。

最后,我们使用 find() 方法查找键为 “Orange” 的值,并输出查找结果。


博客签名2021

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

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

相关文章

sentinel的启动与运行

首先我们github下载sentinel Releases alibaba/Sentinel (github.com) 下载好了后输入命令让它运行即可&#xff0c;使用cmd窗口输入一下命令即可 java -Dserver.port8089 -jar sentinel-dashboard-1.8.6.jar 账号密码默认都是sentinel 启动成功后登录进去效果如下

ABAP 采购组 条目 Z001 不存在T161内-请检查输入

背景&#xff1a;在ALV报表更改PR采购组 做法&#xff1a;ALV报表取出PR相关数据&#xff0c;直接将采购组列设置为可编辑&#xff0c;然后设置按钮更改逻辑。 操作&#xff1a;将采购组值更新&#xff08;从原来500改为600&#xff09;&#xff0c;然后点更改功能按钮&#xf…

汽车一键启动点火开关按键一键启动按钮型号规格

汽车点火开关/移动管家一键启动按键/汽车改装引擎启动按钮型号&#xff1a;YD828溥款开关 一键启动按钮&#xff08;适用于配套启动主机使用或原车一键启动开关更换&#xff09; 1.适合配套专用板板安装 2.开孔器开孔安装 3.原车钥匙位安装 外观&#xff1a;黑色 按钮上有3种不…

SpringBoot 前端406 后端Could not find acceptable representation

原因:返回对象没有get方法,无法转成JSON格式

Elasticsearch:什么是检索增强生成 - RAG?

在人工智能的动态格局中&#xff0c;检索增强生成&#xff08;Retrieval Augmented Generation - RAG&#xff09;已经成为游戏规则的改变者&#xff0c;彻底改变了我们生成文本和与文本交互的方式。 RAG 使用大型语言模型 (LLMs) 等工具将信息检索的能力与自然语言生成无缝结合…

Linux系统下centos中在线添加硬盘后不重启在线扩容linux系统目录不重启系统

Centos7 在线添加硬盘不重启系统 CentOS 7在线添加新磁盘,无需重启 现有环境基本都是线下server以及线上虚拟机等,几乎都支持热插拔,热扩容,所以在线添加新磁盘就尤为重要,这样可以无需中断当前服务或进程也可对其进行添加硬盘操作。 1.添加硬盘: 虚拟机在线状态下对其进行添加…

centos下安装配置redis7

1、找个目录下载安装包 sudo wget https://download.redis.io/release/redis-7.0.0.tar.gz 2、将tar.gz包解压至指定目录下 sudo mkdir /home/redis sudo tar -zxvf redis-7.0.0.tar.gz -C /home/redis 3、安装gcc-c yum install gcc-c 4、切换到redis-7.0.0目录下 5、修改…

【RabbitMQ】docker rabbitmq集群 docker搭建rabbitmq集群

docker rabbitmq集群 docker搭建rabbitmq集群 RabbitMQ提供了两种常用的集群模式 1.普通集群模式 2.镜像集群模式 普通集群模式只能同步主节点上的交换机和队列信息&#xff0c;但对于队列中的消息不做同步&#xff0c;主节点宕机也不能进行切换&#xff08;故障转移&#xff…

【Python】PaddleOCR文字识别国产之光 从安装到pycharm中测试 (保姆级图文)

目录 官方项目地址Python环境搭建&#xff08;也就是使用Anaconda的python&#xff09;1. 安装Anaconda1. 打开终端并创建conda环境 安装PaddlePaddle&#xff08;CPU演示&#xff09;安装PaddleOCR whl包如果安装shapely库报错&#xff08;我没有报错&#xff0c;其他类似库安…

Pygame中将鼠标形状设置为图片2-2

3 编写主程序 在主程序中&#xff0c;首先创建屏幕并且完成一些准备工作&#xff0c;之后在while循环中不断更新sprite实例即可。 3.1 创建屏幕及准备工作 创建屏幕及准备工作的代码如图5所示。 图5 创建屏幕及准备工作 其中&#xff0c;第20行代码调用pygame.mouse模块中的…

pycharm设置pyuic和pyrcc

pyuic设置 适合任何虚拟环境&#xff0c;直接用虚拟环境的python解决一切。。。 E:\anaconda3\envs\qt5\python.exe-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py$FileDir$pyrcc设置 E:\anaconda3\envs\qt5\python.exe-m PyQt5.pyrcc_main $FileName$ -o…

《机器学习》第5章 神经网络

文章目录 5.1 神经元模型5.2 感知机与多层网络5.3 误差逆传播算法5.4 全局最小与局部最小5.5 其他常见神经网络RBF网络ART网络SOM网络级联相关网络Elman网络Boltzmann机 5.6 深度学习 5.1 神经元模型 神经网络是由具有适应性的简单单元组成的广泛并行互连的网络&#xff0c;它…

什么是MTU(Maximum Transmission Unit)?

最大传输单元MTU&#xff08;Maximum Transmission Unit&#xff0c;MTU&#xff09;&#xff0c;是指网络能够传输的最大数据包大小&#xff0c;以字节为单位。MTU的大小决定了发送端一次能够发送报文的最大字节数。如果MTU超过了接收端所能够承受的最大值&#xff0c;或者是超…

基于安卓android微信小程序宠物交易小程序

运行环境 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 小程序框架&…

Spring-事务源码解析2

上一篇文章我们介绍了事务开启注解EnableTransactionManagement源码解析《Spring-事务源码解析1》 里面提到了2个关键组件&#xff0c;这里我们分析下Spring如何利用这2个组件来给Bean创建代理对象。 文章待整理 先说下执行流程&#xff0c;当请求进来的时候&#xff0c;会执…

mysql sql语句遍历树结构

mysqlsql语句遍历树结构 MySQL SQL语句遍历树结构实现步骤 理解树结构和遍历算法 在开始之前&#xff0c;我们首先需要了解什么是树结构以及如何遍历树结构。树结构是一种常用的数据结构&#xff0c;由各个节点和节点之间的关系构成。树结构的一个重要应用是表示具有层级关系…

UE4和C++ 开发-C++与UMG的交互2(C++获取UMG的属性)

1、...C获取UMG的属性 1.1、第一种方法&#xff1a;通过名称获取控件。 void UMyUserWidget::NativeConstruct() {Super::NativeConstruct();//通过名字&#xff0c;获取蓝图控件中的按钮引用。CtnClic Cast<UButton>(GetWidgetFromName(TEXT("Button_44"))…

企业精密空调运营,这才是最好的方法!

机房是现代企业和组织的核心&#xff0c;其中承载着重要的服务器和网络设备&#xff0c;为业务的持续运行提供支持。 机房内的温度、湿度和空气质量对设备的性能和可靠性至关重要。精密空调监控系统通过实时监测和智能控制&#xff0c;确保机房的环境条件始终在最佳状态&#x…

同城跑腿微信小程序源码系统完整搭建教程

今天给大家分享一个同城跑腿微信小程序源码系统的完整搭建教程&#xff0c;源代码全部开源&#xff0c;可二次开发&#xff0c;搭建起来也比较简单。 系统具体功能一览&#xff1a; 地图定位&#xff1a;用户可以通过地图定位找到附近的跑腿服务商&#xff0c;方便快捷。在线下…

生活中的视音频技术

生活中的视音频技术 平时我们打开电脑中自己存电影的目录的话&#xff0c;一般都会如下图所示&#xff0c;一大堆五花八门的电影。&#xff08;其实专业的影视爱好者一概会把影视文件分门别类的&#xff0c;但我比较懒&#xff0c;一股脑把电影放在了一起&#xff09; 因为下载…