Qt QMultiMap

news2024/11/19 16:43:21
头图

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);

    // 输出原始的 QMultiMap
    qDebug() << "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;
        }
    }

    // 输出修改后的 QMultiMap
    qDebug() << "Modified QMultiMap:";
    for (auto it = multiMap.constBegin(); it != multiMap.constEnd(); ++it) {
        qDebug() << it.key() << ":" << it.value();
    }

    // 删除键值对
    key = "Banana";
    multiMap.remove(key);

    // 输出删除后的 QMultiMap
    qDebug() << "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.coloradmin.cn/o/1081670.html

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

相关文章

【环境】我决定半场开香槟!ubuntu20.04 安装 pytorch

还在下载当中&#xff0c;我决定半场开香槟&#xff01;自信稳定安装成功&#xff01; ubuntu20.04 安装 pytorch 硬件及其他环境&#xff1a;win10 ubuntu20.04 3080显卡查找pytorch的版本是最重要的、也是最耽误时间的 PyTorch中torch、torchvision、torchaudio版本对应关…

使用IntelliJ Idea必备的插件!

趁手的工具让开发事半功倍&#xff0c;好用的IDEA插件让效率加倍。 今天给大家分享几个优秀的IDEA插件。 插件安装 首先得知道在IDEA哪安装插件&#xff1f; 点击File---->Settings---->找到Plugins标签&#xff0c;即可搜索想要的插件进行安装了。 现在来看下有哪些值…

bigemap制作专题地图-标绘图斑-标绘设计地图

制作专题地图-标绘图斑-标绘设计地图 发布时间&#xff1a;2018-01-17 版权&#xff1a;BIGEMAP 同步视频教程&#xff1a;卫星地图_高清卫星地图_卫星地图视频_制作专题地图-设计规划测量地图应用详解 专题地图制作视频教程&#xff1a;卫星地图_高清卫星地图_卫星地图视频_地…

点餐小程序实战教程09-订单功能开发

目录 1 创建数据源2 订单确认功能3 提交订单4 订单成功页面总结 我们上一篇已经将商品加入了购物车&#xff0c;如果购买完毕&#xff0c;点击选好了按钮就进入到订单确认页面&#xff0c;确认无误后就写入到订单表。为了实现上述的业务逻辑&#xff0c;我们需要先创建数据源来…

压缩包过大,如何使用split命令拆分压缩包

split命令介绍 1. 使用案例 将文件rebar_count_datasets.zip拆分为N个大小不超过100M的文件&#xff01; split -b 100M -d rebar_count_datasets.zip datasets.zip.运行效果 2. 常用方式 2.1 压缩 & 文件拆分 # tar -czf - <被压缩的内容> | split -b <目…

【java学习】访问权限修饰符(24)

文章目录 1. 四种访问权限修饰符2. private修饰符3. 无(缺省)修饰符3.1. 什么是父子类 4. protected修饰符5. public修饰符6. 练习题 1. 四种访问权限修饰符 Java 权限修饰符public、protected、private 置于类的成员定义前&#xff0c;用来限定对象对该类成员的访问权限。 修…

【车载开发系列】嵌入式开发之中断向量表

【车载开发系列】嵌入式开发之中断向量表 嵌入式中断向量表 【车载开发系列】嵌入式开发之中断向量表一. 中断向量表的概念1&#xff09;中断向量2&#xff09;中断向量表3&#xff09;中断向量表的存放 二. 中断向量表的特点三. 中断向量表的作用四. 上电后第一条指令五. 芯片…

ardupilot罗盘数据计算航向

目录 文章目录 目录摘要1.数据特点2.数据结论1.结论2.结论摘要 本节主要记录ardupilot 根据罗盘数据计算航向的过程。 如果知道了一组罗盘数据,我们可以粗略估计航向:主要后面我们所说的X和Y都是表示的飞机里面的坐标系,也就是X前Y右边,如果按照罗盘坐标系Y实际在左边。 我…

USB 转串口芯片 CH340

目录 1、概述 2、特点 3、封装 4、引脚 6、参数 6.1 绝对最大值&#xff08;临界或者超过绝对最大值将可能导致芯片工作不正常甚至损坏&#xff09; 6.2 电气参数&#xff08;测试条件&#xff1a;TA25℃&#xff0c;VCC5V&#xff0c;不包括连接 USB 总线的引脚&…

甘特图组件DHTMLX Gantt示例 - 如何有效管理团队工作时间?(一)

如果没有有效的时间管理工具&#xff0c;如工作时间日历&#xff0c;很难想象一个项目如何成功运转。这就是为什么我们的开发团队非常重视项目管理&#xff0c;并提供了多种选择来安排DHTMLX Gantt的工作时间。使用DHTMLX Gantt这个JavaScript库&#xff0c;您可以创建一个强大…

自定义一个简单的操控器类

目录 1. 前言 2. 操控器需求 3. 功能实现 3.1. 预备知识 3.2. 代码实现 3.3. 代码难点说明 1. 前言 osg已经自己实现了很多操控器类&#xff0c;这些操控器类存放在osg源码目录下的src\osgGA目录。感兴趣的童鞋&#xff0c;可以自己去研究源码。下面两篇博文是我研究osg的…

设备管理工具

做了一个代理类,抽象出来后在注册表中&#xff0c;查找已经注册的设备 python 中 dict 和 lua 中的 table 一样高效 先初始化找到的设备通信程序,底层接口准备好C,这个设备调试界面就是可以用的,剩下就是MV了 软件升级已经稳定可用了 包括软件的备份和回滚操作登录时为设备页面…

【工作流引擎】Activiti的使用03

流程定义查询 // 获取部署时的信息ProcessEngine processEngine ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService processEngine.getRepositoryService();ProcessDefinitionQuery processDefinitionQuery repositoryService.createProcessDe…

直观全面解释Transformer模型;上海人工智能实验室推出首个图文混合创作大模型浦语灵笔

&#x1f989; AI新闻 &#x1f680; 上海人工智能实验室推出首个图文混合创作大模型浦语灵笔 摘要&#xff1a;上海人工智能实验室推出了一款名为浦语灵笔的图文混合创作大模型&#xff0c;并宣布其开源。浦语灵笔基于书生・浦语大语言模型&#xff0c;具备强大的多模态性能…

LabVIEW开发卫星测试平台

LabVIEW开发卫星测试平台 已经有不少的大学和研究机构经常使用立方体卫星。它们的广泛使用通常归因于使用廉价零件、无偿学生劳动和简单的设计。科学、技术、工程和数学学生已被证明可以通过参与实际工作宇宙飞船系统的规划、开发和测试而从中受益。通过鼓励来自不同学术领域的…

Kubernetes----基于kubeadm工具在CentOS7.9虚拟机上部署一主两从类型的1.26版本的Kubernetes集群环境

【原文链接】Kubernetes----基于kubeadm工具在CentOS7.9虚拟机上部署一主两从类型的1.26版本的Kubernetes集群环境 文章目录 一、虚拟机环境准备1.1 准备三台CentOS操作系统的虚拟机1.2 修改主机名1.3 确认CentOS的版本符合要求1.4 配置地址解析1.5 配置时间同步1.6 关闭防火墙…

【jmeter的使用】【性能测试1】

jmeter的使用笔记2 线程并发的设置定时器1&#xff09;同步定时器2&#xff09;准确的吞吐量定时器3&#xff09;常数吞吐量定时器 用户自定义变量设置响应断言聚合报告查看聚合报告参数详解&#xff1a; 前言&#xff1a;使用jmeter进行简单性能测试实践&#xff0c;以百度搜索…

Java中的错误和异常有什么区别和联系?

​ 概述 错误 该错误表示大多数情况是由于系统资源不足而发生的。系统崩溃和内存错误就是错误的例子。它主要发生在运行时。 错误是用户执行意外操作时产生的严重情况&#xff1b;错误大多发生在编译时&#xff0c;如语法错误&#xff0c;但它也可能发生在运行时&#xff1…

UE5:如何解决背景图片被拉伸的问题?

1.在图片外围包裹一个Scale Box组件 2.将图片的尺寸修改为原始尺寸就可解决问题

北美”闲鱼”Poshmark,如何销售提高成单率?附防封养号攻略

Poshmark 是一款美国的社交商务应用程序&#xff0c;被称为北美的”咸鱼“。该平台提供女性、男性、儿童时尚和家居装饰品。目前在美国、加拿大、澳洲、印度均可开通&#xff0c;其余地区暂不支持。 在平台上&#xff0c;用户可以自由上传和销售产品。Poshmark提供安全的支付解…