当前位置: 首页 > news >正文

c++ std::map 使用注意事项

1. std::map 如果在添加元素前,直接去取 key-value,会怎样 ?

先说答案,map 在添加元素前,直接使用会给 key 添加默认的 value! 

2. 问题背景 

某项目代码报出个严重的bug,具体现象是某个 map 的变量,还没有添加元素,但是获取到数据。经过各种定位发现代码的一个bug,就是 map 变量的使用问题:

std::map<std::string, int> map_Test;int getKeyValue(std::string key) 
{int value = map_Test[key];if(map_Test.count(key) != 0UL) {xxxx(value);}
}

上面代码发现问题没有? 问题就是 map 在取值前,要find 或者count不为0后才能取值。否则map 会给取得key,赋值默认得值。比如上面得 就会给 赋值默认的值 0;

3. 测试代码验证

#include <iostream>
#include <map>
#include <string>using namespace std;
int main()
{std::map<std::string, int> mTest;mTest["a"];auto it = mTest.find("a");if (it != mTest.end()) {cout << "find map: " << mTest["a"];}return 0;
}

上面代码编译运行,结果如下:

g++ map.cpp

./a.out
find map: 0

 4. 结论

c++ std::map 在取值前,要先 find 到值,或者count 值不为0才能取值。如果 map 没有添加key-value,直接取 key,会获取到默认类型的 value。

相关文章:

c++ std::map 使用注意事项

1. std::map 如果在添加元素前&#xff0c;直接去取 key-value&#xff0c;会怎样 &#xff1f; 先说答案&#xff0c;map 在添加元素前&#xff0c;直接使用会给 key 添加默认的 value&#xff01; 2. 问题背景 某项目代码报出个严重的bug&#xff0c;具体现象是某个 map…...

Camera HAL/ISP 专业术语大全

不断更新&#xff0c;建议收藏&#xff0c;快速检索 SOC&#xff0c;System On Chip&#xff0c;片上系统 HAL&#xff0c;Hardware Abstraction Layer&#xff0c;硬件抽象层 ISP&#xff0c;Image Signal Processor&#xff0c;图像信号处理器 KMD&#xff0c;Kernel Mod…...

POI的简单入门

POI的简单入门 导入jar包将数据写入Excel文件读取Excel文件中的数据 导入jar包 Apache POI的maven坐标 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version> </dependency>…...

如何将笔记本作为另一台电脑的副屏显示

背景说明 台式电脑一个显示器不够我使用&#xff0c;而手头又没有多的显示器。我的笔记本有屏幕&#xff0c;但是不能直接连HDMI线给台式拓展屏幕。研究一段时间后发现&#xff0c;利用spacedesk软件可以基本完美解决这个问题。 效果演示 软件下载与安装 官网下载最新版(需要…...

深入理解正则表达式:为什么它在Java中如此重要?

文章目录 一、正则表达式1.1 为什么引入正则表达式1.2 什么是正则表达式 二、正则表达式规则2.1 正则表达式的基本语法规则2.2 非贪婪匹配 三、正则表达式在java中的应用3.1 String3.2 java.util.regex 参考资料 一、正则表达式 1.1 为什么引入正则表达式 在实际编写程序的过…...

jmeter实现webservice接口测试

其实可以用jmeter两种sampler进行webservice的测试&#xff1a; 1、SOAP/XML-RPC Request(但是在jmeter3.2以后版本中已经取消了这个取样器) 2、HTTP请求 下面分别介绍两种方式 一、首先需要使用soupUI工具抓取webservice接口的部分需要的信息。 1、新建项目 2、新建成功的…...

js 四舍五入保留一位小数 求百分比

概览&#xff1a;一个数据占一组数据的比率&#xff0c;并且四舍五入保留一位小数。通过Math.round()四舍五入。 参考链接&#xff1a; mdn中文文档Math.round() 实现思路&#xff1a; Math.round(x) 函数返回一个数字四舍五入后最接近的整数。参数x是一个数值 实现代码&a…...

文件上传漏洞总结2

文件上传的大体都已经学习过了 这个假期在给他强化一下 什么是webshell webshell是web入侵的脚本攻击工具。webshell就是一个asp或php木马后门&#xff0c;黑客在入侵了一个网站后&#xff0c;常常在将这些asp或php木马后门文件放置在网站服务器的web目录中&#xff0c;与正常…...

【组内工作】木马回联

文章目录 C2服务器安装和运行方法CrossC2运行方法sliver运行方法empire安装方法DeimosC2安装教程TrevorC2安装教程&#xff1a; C2服务器的流量特征CrossC21. 心跳包2. 命令3. ja3/ja3s Sliver1. http2. https empirehttphttps DeimosC2https TrevorC2 C2服务器安装和运行方法 …...

未来将会有更多基于 Cortana 的设备

在前些日子的 Build 大会首日 Keynote 中&#xff0c;微软正式确认 HP 跟 Intel 也正在开发基于 Cortana 平台的联网家居产品&#xff0c;这是继推出 Invoke 喇叭的 Harman Kardon 后&#xff0c;又有知名大牌加入到 Cortana 的阵营当中&#xff0c;有这样的品牌资源背景&#…...

嵌入式硬件系统的基本组成

嵌入式硬件系统的基本组成 嵌入式系统的硬件是以包含嵌入式微处理器的SOC为核心&#xff0c;主要由SOC、总线、存储器、输入/输出接口和设备组成。 嵌入式微处理器 每个嵌入式系统至少包含一个嵌入式微处理器 嵌入式微处理器体系结构可采用冯.诺依曼&#xff08;Von Neumann&…...

def __init__(self, **kwargs):中的**kwargs是什么意思

**kwargs是什么意思 在Python中&#xff0c;**kwargs是一种特殊的参数形式&#xff0c;用于接收可变数量的关键字参数&#xff08;Keyword Arguments&#xff09;。kwargs是一个字典&#xff08;dictionary&#xff09;&#xff0c;其中关键字是参数名&#xff0c;对应的值是传…...

web攻击面试|网络渗透面试(三)

Web攻击大纲 常见Web攻击类型&#xff1a; SQL注入攻击&#xff1a;介绍SQL注入攻击的概念、原理和常见的攻击方式&#xff0c;如基于错误消息的注入、基于布尔盲注的注入等。解释攻击者如何利用SQL注入漏洞获取敏感信息或者对数据库进行恶意操作&#xff0c;并提供防御措施&a…...

数据分析方法

常用的数据分析方法有&#xff1a;1、对比分析法&#xff1b;2、分组分析法&#xff1b;3、结构分析法&#xff1b;4、留存分析法&#xff1b;5、交叉分析法&#xff1b;6、漏斗分析法&#xff1b;7、矩阵分析法&#xff1b;8、象限分析法&#xff1b;9、趋势分析法&#xff1b…...

Spring全家桶---白虎篇

其中包括&#xff1a;Spring、Spring6、Spring Data、Spring Cloud Alibaba、Spring Cloud、Spring Boot、Spring Security、SpringMVC。 &#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是小童&#xff0c;Java开发工程师&#xff0c;CSDN博客博主&#xff0c;Java领域…...

深度优先搜索|79, 695,212

深度优先搜索|79. 单词搜索, 695. 岛屿的最大面积, 212. 单词搜索 II 单词搜索岛屿的最大面积单词搜索II 单词搜索 用的是深度优先搜索&#xff0c;这种判断类型的回溯我就一直不知道要怎么回退&#xff0c;然后勉强写了一个。 这里还有一个注意事项就是&#xff0c;走到最后一…...

论文阅读与管理方法论

文章目录 为什么读论文论文类型综述论文专题论文 论文质量角度关于如何找论文的小Tips如何整理论文读论文的困境如何读论文不同人群阅读差异读论文三部曲&#xff1a;泛读、精读、总结泛读&#xff1a;快速浏览&#xff0c;把握概要。泛读目标及效果自测 精读&#xff1a;选出精…...

基于OAI与Ueransim的5G网络切片平台构成简述

自定义多切片核心网构建 为了实现在同一台机器上同时对每一个切片启动一套单独的核心网&#xff0c;并且可以同时启动多套核心网&#xff0c;我们在官方提供的核心网模板的基础上进行适当的修改&#xff0c;扩展出其他可以正常运行的核心网&#xff0c;由此我们可以实现在同一…...

论文笔记:Adjusting for Autocorrelated Errors in Neural Networks for Time Series

2021 NIPS 原来的时间序列预测任务是根据预测论文提出用一阶自回归误差预测 一阶差分&#xff0c;类似于ResNet的残差思路&#xff1f;记为pred&#xff0c;最终的预测结果...

DataEase开源BI工具安装_数据全量_增量同步_大屏拖拽自动生成_多数据源支持_数据血缘分析---大数据工作笔记0183

我这里用的是Centos7.9安装的 可以通过uname -p来查看一下我们的电脑架构,可以看到是x86_64架构的 我们下第一个,这个是x86架构的,第二个arm架构的 然后解压到/opt/module中 然后再去重命名一下文件夹. 推荐200G 本地模式的功能比较多 推荐100G...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...