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.mzph.cn/news/105483.shtml

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

相关文章

git cherry-pick命令

问题场景&#xff1a; 需要把dev分支的代码&#xff0c;合并到master分支中&#xff0c;但是又不能根据整个分支合并&#xff0c;所有使用cherry-pick命令&#xff0c;根据提交的commit号来合并 问题描述&#xff1a; 原因分析&#xff1a; 解决方案&#xff1a; 1.在dev分支…

代码随想录

前言 代码随想录算法训练营day37 一、Leetcode 968.监控二叉树 v 1.题目 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1&#xff1a; 输入&…

【Python】Python语言基础(上)

第一章 前言 1. Python简介 Python语言并不是新的语言&#xff0c;它早于HTTP 1.0协议5年&#xff0c;早于Java语言 4年。 ​ Python是由荷兰人Guido van Rossum&#xff08;吉多范罗苏姆&#xff09;于1989年圣诞节期间在阿姆斯特丹休假时为了打发无聊的假期而编写的一个脚本…

车载电子电器架构 —— 国产基础软件现在与未来

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

bash: /usr/bin/cmake: No such file or directory

问题描述 当在linux 下 源码安装 cmake &#xff0c;验证安装 cmake --version&#xff0c; 出现以下错误&#xff1a; bash: /usr/bin/cmake: No such file or directory 解决方法&#xff1a; 将编译生成的 cmake 复制到 /usr/bin 文件夹下 cp ./cmake-3.x/bin/cmake …

idea自动封装方法

例如 package com.utils;import java.lang.reflect.Field; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle;/*** author hrui* date 2023/10/13 13:49*/ public class DBUtils {private static ResourceBundle bund…

华为云云耀云服务器L实例评测|华为云耀云服务器L实例docker部署及应用(七)

八、华为云耀云服务器L实例docker、docker-compose安装及部署MySQL、Redis应用&#xff1a; 随着云原生、容器化、微服务、K8S等技术的发展&#xff0c;容器 docker 也逐渐在企业团队实践中大量的使用。它可以提供了一套标准化的解决方案&#xff0c;极大地提升了部署、发布、运…

2023年中国视频流媒体行业发展历程及趋势分析:未来市场规模趋于平稳[图]

随着移动通信的发展和视频内容产业供给端的繁荣&#xff0c;流媒体视频平台已经成为互联网用户上网时长最长的应用之一。在线视频行业经历了十几年的规范发展阶段&#xff0c;在各大头部平台百花齐放的现状下&#xff0c;难以实现一家独大&#xff0c;但部分平台有领先优势&…

acwing算法基础之基础算法--整数离散化算法

目录 1 知识点2 模板 1 知识点 整个范围很大&#xff0c;但存在的数据点很少。比如从 − 1 0 9 -10^9 −109到 1 0 9 10^9 109&#xff0c;但总共只有 1 0 6 10^6 106个数。 可以采用离散化的思想来做&#xff0c;即将离散的大数值映射成连续的小数值&#xff08;一般是 1 , …

软考高级架构师下篇-18大数据架构理论设计与实践

目录 1. 引言2. 传统数据处理系统的问题1.传统数据库的数据过载问题2.大数据的特点3.大数据利用过程4.大数据处理系统架构分析3.典型的大数据架构1. Lambda架构2.Kappa架构3. Lambda架构与Kappa架构的对比4.大数据架构的实践1.大规模视频网络2.广告平台3.公司智能决策大数据系统…

整理redis写入string类型的缓存的方法

第一种存储方式&#xff1a;JSON方法 可以使用Redis的序列化方法将数组转换为字符串&#xff0c;然后将其写入Redis中的String类型缓存。常见的序列化方法有JSON和PHP自带的序列化函数serialize和unserialize。 以下是一个示例代码&#xff0c;将一个数组写入Redis中&#xf…

数字孪生技术:新零售的未来之路

随着科技的不断进步&#xff0c;新零售产业正经历着巨大的变革。数字孪生作为一种新兴技术正在加速这一变革的进程。它不仅为新零售企业带来了更高效的运营方式&#xff0c;还为消费者提供了更个性化、便捷的购物体验。那么&#xff0c;数字孪生技术究竟如何在新零售产业中发挥…

HDLbits:Fsm onehot

这道题理解有误&#xff0c;以为s010b0000000001&#xff0c;s010b0000000010&#xff0c;写成了如下的代码&#xff08;有误&#xff09;&#xff1a; module top_module(input in,input [9:0] state,output [9:0] next_state,output out1,output out2);parameter s010b00000…

分享关于职场心态

1.解决问题而不是解释原因 2.秉承工匠思维而不是激情思维 什么是工匠思维&#xff1f; 工匠思维&#xff08;The craftsman mindset&#xff09;对待职业生涯的一种方式&#xff1b;是以产出为中心的职业观&#xff0c;关注自己给世界&#xff08;工作&#xff09;带来的价值…

免密码方式获取Hive元数据

前言 开发中可能用到hive的元数据信息 &#xff0c;如获取hive表列表、hive表字段、hive表数据量大小、hive表文件大小等信息&#xff0c;要想获取hive元数据信息即需要hive元数据库的账号及密码&#xff0c;此次提供的是一种不需要hive元数据库密码及可获取元数据信息的方式 …

观察者模式、订阅者发布者模式、vtk中的观察者模式

文章目录 什么是观察者模式vtk是如何实现的观察者模式.AddObserver什么时候使用观察者模式&#xff1f;什么使用订阅发布者模式?观察者模式的实现订阅发布者的实现总结知识补充: 什么是观察者模式 用于在对象之间建立一对多的依赖关系&#xff0c;当一个对象的状态发生变化时…

用一个结构去分割二维空间

( A, B )---5*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有5个节点&#xff0c;AB训练集各由5张二值化的图片组成&#xff0c;让A 中有5个点&#xff0c;B全是0&#xff0c;排列组合&#xff0c;统计迭代次数并排序。 其中5-x有3组数据 4-x 差值结构 迭代次数 5-x 差值结构 …

JAVA之多线程

文章目录 进程与线程多线程的生命周期多线程的实现方式 进程与线程 进程是指运行中的应用程序&#xff0c;每一个进程都有自己独立的内存空间&#xff1b;线程是指进程中的一个执行流程&#xff0c;有时也称为执行情景&#xff1b;一个进程可以由多个线程组成&#xff0c;即在…

springboot中如何加载测试专用属性

测试 加载测试专用属性 加载测试专用配置 Web环境模拟测试 数据层测试回滚 测试用例数据设定 1.在启动测试环境时可以通过properties参数设置测试环境专用的属性 SpringBootTest(properties {"test.proptestValue1"}) public class PropertiesAndArgsTest {Value(…

Web应用-Thinkphp框架-开发指南

Thinkphp框架 二级导航分类&#xff0c;模板继承&#xff0c;内置标签Public 修改MVC模块化 ——访问机制传参加载模版模版引入 分离Runtime 缓存文件管理员添加数据验证及验证场景 控制器 validate 在sql执行&#xff08;敏感操作&#xff09;之前验证数据模板 分页数据表连接…