QMap key()和value(const Key key, const T defaultValue = T()) const第二个参数作用

value()函数介绍

返回与键key关联的值。

如果map不包含键为key的项,则该函数返回defaultValue
如果没有指定defaultValue,该函数返回一个默认构造的值。
如果映射中有多个key项,则返回最近插入的项的值。

示例

定义自定义类型:

class c
{
  public:
    explicit c(){}
    int n;
};

调用:

  1. 当获取的Key存在时,不管默认值存在不存在,都会使用key对应的value:
    QMap<int, c*> map;

    c* pC1 = new c();
    pC1->n = 10;

    map.insert(1, pC1);
    
    c* pCTmp = nullptr; //new c();
    // pCTmp->n = 100;
    // 当获取的key存在时
    c* pTmp = map.value(1, pCTmp);
    if(pCTmp)
        qDebug().noquote() << "默认值 :" << pCTmp->n;

    if(pTmp)
        qDebug().noquote() << "key 对应的值 :" << pTmp->n;

在这里插入图片描述

  1. 当获取的key不存在时,默认值存在:
    QMap<int, c*> map;

    c* pC1 = new c();
    pC1->n = 10;

    map.insert(1, pC1);

    c* pCTmp = new c();
    pCTmp->n = 100;
    // 当获取的key不存在时,默认值存在
    c* pTmp = map.value(2, pCTmp);
    if(pCTmp)
        qDebug().noquote() << "默认值 :" << pCTmp->n;

    if(pTmp)
        qDebug().noquote() << "key 对应的值 :" << pTmp->n;

在这里插入图片描述
3. 当获取的key和默认值都不存在时:

	QMap<int, c*> map;

    c* pC1 = new c();
    pC1->n = 10;

    map.insert(1, pC1);

    c* pCTmp = nullptr;
    // 当获取的key不存在时,默认值存在
    c* pTmp = map.value(2, pCTmp);
    if(pCTmp)
        qDebug().noquote() << "默认值 :" << pCTmp->n;
    else
        qDebug().noquote() << "默认值不存在";

    if(pTmp)
        qDebug().noquote() << "key 对应的值 :" << pTmp->n;
    else
        qDebug().noquote() << "key对应值不存在";

在这里插入图片描述

key()函数

这是一个重载函数。

返回第一个值为value的键,如果映射不包含值为value的项,则返回defaultKey。如果没有提供defaultKey,则该函数返回一个默认构造的键。

这个函数可能很慢(线性时间),因为QMap的内部数据结构是为按键而不是按值进行快速查找而优化的。

    QMap<int, c*> map;

    c* pC1 = new c();
    pC1->n = 10;

    map.insert(1, pC1);
    // value存在时
    qDebug().noquote() << "value 存在时 :" << map.key(pC1);

    c* pCTmp1 = nullptr;
    // value不存在,默认key存在时
    qDebug().noquote() << "value不存在,默认key存在时 :" << map.key(pCTmp1, 2);
    // map 的keys
    qDebug().noquote() << "map 的keys :" << map.keys();

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

距离向量路由协议——RIP

目录 动态路由动态路由简介为什么需要动态路由动态路由基本原理路由协议的分类 距离向量路由协议RIPv1 VS RIPv2RIP简介RIPv1的主要特征RIPv1的基本配置 VS RIPv2的基本配置RIP配置案例被动接口单播更新使用子网地址 动态路由 动态路由简介 为什么需要动态路由 如果采用静态…

串口数据包收发的思路和流程-stm32入门

本节主要内容&#xff1a; 如何去规定一个合理的数据包格式如何收发数据包 1. 数据包格式规定/定义 1.1 HEX 数据包定义 固定包长&#xff0c;含包头包尾 可变包长&#xff0c;含包头包尾 首先数据包的作用是把一个个单独的数据给打包起来&#xff0c;方便我们进行多字节…

126. 单词接龙 II

126. 单词接龙 II 需要注意的是&#xff0c;由于要找最短路径&#xff0c;连接 dot 与 lot 之间的边就不可以被记录下来&#xff0c;同理连接 dog 与 log 之间的边也不可以被记录。这是因为经过它们的边一定不会是最短路径。因此在广度优先遍历的时候&#xff0c;需要记录的图…

运维01:云计算

云计算的类型 分类&#xff1a;公有云、私有云、混合云 云计算的服务模式 服务模式分3种&#xff1a; ①IaaS&#xff08;Infrastructure as a Service&#xff09;&#xff1a;基础设施即服务 ②PaaS&#xff08;Platform as a Service&#xff09;&#xff1a;平台即服务…

第一节HarmonyOS DevEcoStudio工具下载以及环境搭建

一、下载与安装DevEco Studio 在HarmonyOS应用开发学习之前&#xff0c;需要进行一些准备工作&#xff0c;首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio 工具下载官网&#xff1a;https://developer.harmonyos.com/cn/develop/deveco-stu…

STL: 容器适配器stack 与 queue

目录 1.容器适配器 1.1 STL标准库中stack和queue的底层结构 1.2 deque的简单介绍(了解) 1.2.1 deque的原理介绍 1.2.2 deque的缺陷 1.2.3 为什么选择deque作为stack和queue的底层默认容器 2. stack的介绍和使用 2.1 stack的介绍 2.2 stack的使用 2.3 利用deque模拟实现…

3分钟快速实现EG网关串口连接丰炜PLC

EG网关串口连接丰炜PLC 前言&#xff1a;丰炜PLC广泛应于工业控制领域&#xff0c;是一款性能高、稳定性强的PLC设备。此文档将介绍如何使用EG系列网关通过串口连接丰炜PLC&#xff0c;并添加到EP物联网云平台&#xff0c;实现电脑Web页面、手机APP和微信对丰炜PLC的远程监控和…

【24届校招】c++选手还有机会吗?如何选择更好的出路?

一、今年为什么c选手就业形势如此艰难&#xff1f; 去年c岗位的火热&#xff0c;不少c选手拿到高薪offer&#xff0c;今年转c的人群变多&#xff0c;内卷加剧&#xff0c;高学历大佬多如牛毛&#xff0c;很多比较好的c岗位多人投递&#xff0c;僧多肉少。 从行情来说&#xf…

关于‘NoneType‘ object has no attribute ‘endswith‘问题

这是个调用文件&#xff0c;相当于一个工具&#xff0c;不能单独使用&#xff0c;所以运行会报这个错误。

CSS3制作3D爱心动画

1、什么是CSS css&#xff0c;即层叠样式表的简称&#xff0c;是一种标记语言&#xff0c;有浏览器解释执行用来使页面变得更美观。 2、选择器 css3中新增了一些选择器&#xff0c;如下&#xff1a; 3、新样式 边框 css3新增了三个边框属性&#xff0c;分别是&#xff1a; bo…

C++值常用集合算法

C值常用集合算法 set_intersection #include<iostream> using namespace std; #include<vector> #include<numeric> #include<algorithm>class MyPrint { public:void operator()(int val){cout << val<<" ";} };void test() {v…

LabVIEW绘制带有多个不同标尺的波形图

LabVIEW绘制带有多个不同标尺的波形图 通过在同一波形图上使用多个轴&#xff0c;可以使用不同的标尺绘制数据。请按照以下步骤操作。 将波形图或图表控件放在前面板上。 1. 右键点击您要创建多个标尺的轴&#xff0c;然后选择复制标尺。例如&#xff0c;如果要为一个…

python爬虫进阶篇(异步)

学习完前面的基础知识后&#xff0c;我们会发现这些爬虫的效率实在是太低了。那么我们需要学习一些新的爬虫方式来进行信息的获取。 异步 使用python3.7后的版本中的异步进行爬取&#xff0c;多线程虽然快&#xff0c;但是异步才是爬虫真爱。 基本概念讲解 1.什么是异步&…

八股文-Java方法的重载与重写

在 Java 中&#xff0c;重载和重写是两个关键的面向对象编程概念。重载通过方法的参数列表不同来区分同名方法&#xff0c;提供了更灵活的方法调用方式。而重写通过子类重新定义父类中已经存在的方法&#xff0c;实现了多态性的体现&#xff0c;让代码更具可扩展性和维护性。 重…

【云备份】配置加载文件模块

文章目录 配置信息设计配置文件加载cloud.conf配置文件单例模式的使用ReadConfigFile —— 读取配置文件GetInstance —— 创建对象其他函数的实现 具体实现cloud.confconfig.hpp 配置信息设计 使用文件配置加载一些程序运行的关键信息 可以让程序的运行更加灵活 配置信息&am…

基于单片机病房呼叫程序和仿真

如果学弟学妹们在毕设方面有任何问题&#xff0c;随时可以私信我咨询哦&#xff0c;有问必答&#xff01;学长专注于单片机相关的知识&#xff0c;可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。 愿毕业生有力&#xff0c;陪迷茫着前行&#xff01; 一、系统方案 1…

spring Cloud在代码中如何应用,erueka 客户端配置 和 服务端配置,Feign 和 Hystrix做高可用配置

文章目录 Eureka一、erueka 客户端配置二、eureka 服务端配置 三、高可用配置FeignHystrix 通过这篇文章来看看spring Cloud在代码中的具体应用&#xff0c;以及配置和注解&#xff1b; Eureka 一、erueka 客户端配置 1、Eureka 启禁用 eureka.client.enabledtrue 2、Eurek…

Redis深入理解-三次握手、槽位机制

Redis 节点之间的三次握手原理分析 比如多台 Redis 之间要建立集群&#xff0c;那么连接其中的一台 Redis 客户端&#xff0c;向其他 Redis 发送 meet 命令即可通知其他节点&#xff0c;那么发送 meet 命令给其他节点后&#xff0c;对方也会在内存中创建一个 ClusterNode 结构…

【shell】正则表达式和文本三剑客之grep和awk

目录 一、正则表达式 1.1用法 1.2表示字符匹配 1.3表示次数 1.4表示位置锚定 1.5表示分组或其他 1.6扩展正则表达式 二、grep命令 三、awk命令 3.1awk与vim的区别 3.2awk的语法 3.3基础用法 test1.提取磁盘的分区利用率 test2.提取用户名和uid号 test3.提取ip地址…

键盘打字盲打练习系列之刻意练习——1

一.欢迎来到我的酒馆 盲打&#xff0c;刻意练习! 目录 一.欢迎来到我的酒馆二.选择一款工具三.刻意练习 二.选择一款工具 俗话说&#xff1a;工欲善其事必先利其器。在开始之前&#xff0c;我们可以选择一款练习盲打的工具。打字软件有很多&#xff0c;还有专门练习打字的网站&…