STL map,插入和查找的一些注意事项
01、前言(废话)
C++ 的 std::map 容器中插入键值对主要有myMap(std::make_pair(key value)) ,它们的区别你了解吗?
auto it = myMap,find(key) 和 auto value = myMap[key] 都可以用于在 C++ 的 std::map 容器中查找键对应的值,但是如果auto value = myMap[key]的key不存在时会有什么问题呢?
下文就详细介绍它们的区别
02、插入
C++ 插入主要有:myMap[key] = value 和 myMap(std::make_pair(key,value))
- myMap[key] = value是通过使用提来访问和修改映射中的值,如果键不存在,则会创建一个新的键值对,并将值插入到映射中,如果键已经存在,则会更新对应的值。
- myMap(std::make_pair(key value))是通过使用 std:pair 来插入键值对,这种式可以在创建键值对的同时进行初始化,并将其插入到映射中,如果键已经存在,则不会进行更新操作。
map<int, string> myMap;myMap.insert(std::make_pair(10,"abc"));myMap.insert(std::make_pair(10, "abcd"));cout << myMap[10] << endl;myMap[11] = "123";cout << myMap[11] << endl;myMap[11] = "1234";cout << myMap[11] << endl;
运行结果
abc
123
1234
可以看到,调用inset方法时,若果该key已经存在,不会更新该key的值,在调用insert函数的时候需要注意。
03、查看
C++ 的 std::map 容器中查找键对应的值注意是auto it = myMap.find(key) 和 auto value = myMap[key]
- auto it = myMap,find(key)使用 find 函数来查找键对应的值,如果键存在,则回一个指向该键值对的法代器,如果键不存在,则返回 myMap.end()。
- auto value = myMap[key] 使用健来直接访问和获取对应的值,如果键存在,则返回对应的值;如果键不存在,则会创建一个新的键值对,并将默认值插入到映射中.
map<int, int> myMap1;
myMap1[2] = 2;
cout <<"myMap1 size = "<< myMap1.size() << endl;
int val1 = myMap1[1];
cout << "val1 = " << val1 << "; myMap1 size = " << myMap1.size() << "; myMap1[2] = " << myMap1[2] << endl;
cout << "-------------------------------------" << endl;map<int, int> myMap2;
myMap2[22] = 22;
cout << "myMap2 size = " << myMap2.size() << endl;
auto it1 = myMap2.find(11);
auto it2 = myMap2.find(22);
if (it1 == myMap2.end())cout << "myMap2 not find 11" << endl;
if (it2 != myMap2.end())cout << "key = " << it2->first << "; value = " << it2->second << endl;
cout << "myMap2 size = " << myMap2.size() << endl;
运行结果
myMap1 size = 1
val1 = 0; myMap1 size = 2; myMap1[2] = 2
-------------------------------------
myMap2 size = 1
myMap2 not find 11
key = 22; value = 22
myMap2 size = 1
注意:使用 myMap[key] 时,如果健的类型是自定义类型,需要确保该类型已经实现了合适的默认构造函数,以便在键不存在时能够插入默认值.
相关文章:
STL map,插入和查找的一些注意事项
01、前言(废话) C 的 std::map 容器中插入键值对主要有myMap(std::make_pair(key value)) ,它们的区别你了解吗? auto it myMap,find(key) 和 auto value myMap[key] 都可以用于在 C 的 std::map 容器中查找键对应的值ÿ…...
基于springboot+vue的客户关系管理系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
【Java 基础篇】Java Stream 流详解
Java Stream(流)是Java 8引入的一个强大的新特性,用于处理集合数据。它提供了一种更简洁、更灵活的方式来操作数据,可以大大提高代码的可读性和可维护性。本文将详细介绍Java Stream流的概念、用法和一些常见操作。 什么是Stream…...
题解:ABC321A - 321-like Checker
题解:ABC321A - 321-like Checker 题目 链接:Atcoder。 链接:洛谷。 难度 算法难度:C。 思维难度:C。 调码难度:C。 综合评价:见洛谷链接。 算法 模拟。 思路 输入n后从后往前依次抽…...
Zig实现Hello World
1. 什么是zig 先列出一段官方的介绍: Zig is a general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software. 大概意思就是说: Zig是一种通用编程语言和工具链,用于维护健壮、最佳和可重用的软件。 官…...
Vue3+element-plus切换标签页时数据保留问题
记录一次切换标签页缓存失效问题,注册路由时name不一致可能会导致缓存失效...
前端教程-TypeScript
官网 TypeScript官网 TypeScript中文官网 视频教程 尚硅谷TypeScript教程(李立超老师TS新课)...
代码随想录算法训练营 动态规划part06
一、完全背包 卡哥的总结,还挺全代码随想录 (programmercarl.com) 二、零钱兑换 II 518. 零钱兑换 II - 力扣(LeetCode) 被选物品之间不需要满足特定关系,只需要选择物品,以达到「全局最优」或者「特定状态」即可。 …...
能跑通的mmdet3d版本
能跑通的mmdet3d版本 1.0版本 2.0版本 注意:mmdet和mmdet3d简单地运行 pip install -v -e . 将会安装最低运行要求的版本。不要pip install -r requirements.txt安装依赖项,否则依赖库版本不对。 运行mmdet3d时,注释掉以上代码。...
SD-MTSP:萤火虫算法(FA)求解单仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)
一、萤火虫算法(FA)简介 萤火虫算法(Firefly Algorithm,FA)是Yang等人于2009年提出的一种仿生优化算法。 参考文献:田梦楚, 薄煜明, 陈志敏, et al. 萤火虫算法智能优化粒子滤波[J]. 自动化学报, 2016, 42(001):89-97. 二、单仓…...
bootstrapv4轮播图去除两侧阴影及线框的方法
文章目录 前言一、前提条件:二、bootstrap文档组件展示与实际应用1.官方文档展示如下:没有阴影2.实际应用情况如下: 三、解决方案 前言 这篇文章主要介绍了bootstrapv4轮播图去除两侧阴影及线框的方法,本文通过示例代码给大家介绍的非常详细…...
python 自建kafka消息生成和消费小工具
要将 Kafka 的消息生产和消费转换为 API 接口,我们可以使用 Python 的 Web 框架。其中 Flask 是一个轻量级且易于使用的选择。下面是一个简单的例子,使用 Flask 创建 API 来生成和消费 Kafka 消息。 1. 安装所需的库: pip install kafka-py…...
Prim算法:经过图中所有节点的最短路径
题目链接:53. 寻宝(第七期模拟笔试) #include<bits/stdc.h> using namespace std;// v为节点数量,e为边数量 int v, e;// 最小生成树 void prim(vector<vector<int>>& adj) {vector<int> dist(v1, I…...
Linux 信号捕捉函数 signal sigaction
signal函数 #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); 功能:设置某个信号的捕捉行为 参数: -signum:要捕捉的信号 handler:对捕捉到的信号怎么处理…...
StarRocks操作笔记
最近在使用starRocks,记录一些临时的操作技巧,防止遗忘。 1. 创建表 CREATE TABLE IF NOT EXISTS ODS.T_TEST( pk_day date, pool_address string, code string comment 唯一主键, test1 string, test2 string, test3 string, pk_year varchar(4), pk_m…...
Linux的ls -ld命令产生的信息怎么看
2023年9月24日,周日上午 目录 ls -ld列出的目录或文件的信息含义文件硬链接什么是文件硬链接为什么新建目录的文件硬链接为2举例说明例一例二例三 ls -ld列出的目录或文件的信息含义 第一个字符表示文件类型: d: 目录 -: 普通文件 l: 软链接 b: 块设备文件 c:…...
Linux- 内存映射文件(Memory-Mapped File)
内存映射文件(Memory-Mapped File)是⼀种将文件内容映射到内存中的机制,允许程序直接访问文件数据,就好像这些数据已经被加载到了内存⼀样。这个机制允许文件的内容被映射到⼀个进程的地址空间,从而允许程序以⼀种更高…...
李航老师《统计学习方法》第五章阅读笔记
决策树(decision tree)是一种基本的分类与回归方法。本章主要讨论用于分类的决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。 以下是关于分类决策树的一些基本概念和特点: 树形结构&am…...
iOS16新特性:实时活动-在锁屏界面实时更新APP消息 | 京东云技术团队
简介 之前在 《iOS16新特性:灵动岛适配开发与到家业务场景结合的探索实践》 里介绍了iOS16新的特性:实时更新(Live Activity)中灵动岛的适配流程,但其实除了灵动岛的展示样式,Live Activity还有一种非常实用的应用场景…...
使用 Elasticsearch、OpenAI 和 LangChain 进行语义搜索
在本教程中,我将引导您使用 Elasticsearch、OpenAI、LangChain 和 FastAPI 构建语义搜索服务。 LangChain 是这个领域的新酷孩子。 它是一个旨在帮助你与大型语言模型 (LLM) 交互的库。 LangChain 简化了与 LLMs 相关的许多日常任务,例如从文档中提取文本…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
Spring事务传播机制有哪些?
导语: Spring事务传播机制是后端面试中的必考知识点,特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发,全面剖析Spring事务传播机制,帮助你答得有…...
claude3.7高阶玩法,生成系统架构图,国内直接使用
文章目录 零、前言一、操作指南操作指导 二、提示词模板三、实战图书管理系统通过4o模型生成系统描述通过claude3.7生成系统架构图svg代码转换成图片 在线考试系统通过4o模型生成系统描述通过claude3.7生成系统架构图svg代码转换成图片 四、感受 零、前言 现在很多AI大模型可以…...
【Ragflow】26.RagflowPlus(v0.4.0):完善解析逻辑/文档撰写模式全新升级
概述 在历经半个月的间歇性开发后,RagflowPlus再次迎来一轮升级,正式发布v0.4.0。 开源地址:https://github.com/zstar1003/ragflow-plus 更新方法 下载仓库最新代码: git clone https://github.com/zstar1003/ragflow-plus.…...
C++ 使用 ffmpeg 解码 rtsp 流并获取每帧的YUV数据
一、简介 FFmpeg 是一个开源的多媒体处理框架,非常适用于处理音视频的录制、转换、流化和播放。 二、代码 示例代码使用工作线程读取rtsp视频流,自动重连,支持手动退出,解码并将二进制文件保存下来。 注意: 代…...
