C++ Reference: Standard C++ Library reference: Containers: map: map: operator[]

news2024/11/18 12:25:19

C++官网参考链接:https://cplusplus.com/reference/map/map/operator[]/

公有成员函数 
<map>
std::map::operator[]
C++98
mapped_type& operator[] (const key_type& k);
C++11
mapped_type& operator[] (const key_type& k);
mapped_type& operator[] (key_type&& k);
访问元素
如果k匹配容器中某个元素的键,则函数返回对其映射值的引用。
如果k与容器中任何元素的键不匹配,则函数插入一个带有该键的新元素,并返回对其映射值的引用。注意,这总是使容器的大小(container size)增加1,即使没有将映射值赋给元素(元素是使用其默认构造函数构造的)。
类似的成员函数map::at在具有键的元素存在时具有相同的行为,但在不存在时抛出异常。
对这个函数的调用相当于: 
(*((this->insert(make_pair(k,mapped_type()))).first))。

形参 
k
访问其映射值的元素的键值。
成员类型key_type是容器中存储的元素的键的类型,在map中定义为其第一个模板形参(Key)的别名。
如果是右值(第二个版本),则在插入新元素时将移动键而不是复制键。

返回值
对元素的映射值的引用,其键值等价于k。
成员类型mapped_type是容器中映射值的类型,在map中定义为其第二个模板形参(T)的别名。

用例
// accessing mapped values
#include <iostream>
#include <map>
#include <string>

int main ()
{
  std::map<char,std::string> mymap;

  mymap['a']="an element";
  mymap['b']="another element";
  mymap['c']=mymap['b'];

  std::cout << "mymap['a'] is " << mymap['a'] << '\n';
  std::cout << "mymap['b'] is " << mymap['b'] << '\n';
  std::cout << "mymap['c'] is " << mymap['c'] << '\n';
  std::cout << "mymap['d'] is " << mymap['d'] << '\n';

  std::cout << "mymap now contains " << mymap.size() << " elements.\n";

  return 0;
}
注意最后一次访问(对元素'd')是如何使用该键在map中插入一个新元素并初始化为它的默认值(一个空字符串)的,即使访问它只是为了获取它的值。成员函数map::find不会产生这种效果。输出:

复杂度
size中的对数。

iterator的有效性
没有变化。

数据竞争
容器被访问,并可能被修改。
函数访问一个元素并返回一个引用,该引用可用于修改其映射值。同时访问其他元素是安全的。
如果函数插入新元素,则同时迭代容器中的范围是不安全的。

异常安全
强保证:如果抛出异常,则容器中不会有任何更改。
如果插入一个新元素,而allocator_traits::construct不能构造一个带有k和默认构造的mapped_type的元素(或者如果mapped_type不是默认可构造的(default constructible)),它将导致未定义的行为。  

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

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

相关文章

SQL基础——数据更新

数据更新前言思维导图数据的插入&#xff08;INSERT语句的使用方法&#xff09;什么是INSERTINSERT语句的基本语法语法4.1 INSERT语句代码示例4.2 创建 ProductIns表的CREATE TABLE语句代码示例4.3 向表中插入一行数据代码示例4.4 INSERT插入多行数据列清单的省略代码示例4.5 省…

chatGPT的49种应用场景,及各开发语言对接chatGPT参考指南

前沿 可能有人在问我&#xff0c;勇哥为什么chatGPT都被微信下架了&#xff0c;你还要写相关的chatGPT的文章呢&#xff1f;其实我们先不论微信下架的原因&#xff0c;单说chatGPT的达芬奇模型给勇哥带来的科技感早就超越了一切&#xff0c;所以勇哥依旧决定连续熬两个夜为大家…

【与达梦同行】达梦驱动图谱

达梦驱动图谱 摘要 达梦提供了大部分主流开发语言的驱动接口&#xff0c;在我用使用过的国产数据库中对客户端驱动的支持应该算是非常不错的。本文主要介绍达梦的驱动开发&#xff0c;通过实际操作&#xff0c;从环境搭建到实践验证&#xff0c;介绍了达梦各种语言驱动的详细使…

博途S7-1500T 使用工艺对象驱动液压轴(含SimaHydTO库)

利用工艺对象控制液压轴位置含PLC控制和仿真程序文档资料下载地址如下: https://support.industry.siemens.com/cs/document/109756217/simatic-s7-1500(t)-lsimahydto-for-hydraulic-applications-and-hydraulic-presses?dti=0&dl=en&lc=zh-CNhttps://support.indu…

圣诞树-python绘制雪夜圣诞树并封装为小程序

绘制雪夜圣诞树并封装为小程序 使用turtle绘制一颗雪夜圣诞树&#xff0c;然后封装成exe小程序送给你的朋友吧&#xff01; PS&#xff1a;只能在windows运行。 转载注明本文链接和作者 先看效果图&#xff1a; 绘制雪夜圣诞树 由于代码有三百多行&#xff0c;我放在下面的两…

一文彻底搞懂cookie、session、token

1.Cookie Cookie是客户端保存用户信息的一种机制&#xff0c;用来记录用户的一些信息&#xff0c;实际上Cookie是服务器在本地机器上存储的一小段文本&#xff0c;并随着每次请求发送到服务器。 Cookie技术通过请求和响应报文中写入Cookie信息来控制客户端的状态。 Cookie会…

28.项目搭建网关

项目搭建网关 一、项目架构 二、创建模块&#xff0c;引入依赖&#xff0c;创建启动类&#xff0c;添加application.yml配置文件 2.1依赖 <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-…

【AI with ML】第 9 章 :了解序列和时间序列数据

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

【linux】linux环境变量初始化与对应文件的生效顺序

1.认识环境变量&#xff08;PATH) 环境变量&#xff08;PATH&#xff09;是一个列表&#xff0c;里面是有序的一些程序的地址&#xff08;一般是xxx/bin&#xff09;&#xff0c;添加环境变量后&#xff0c;系统在任何目录输入命令&#xff0c;都可以识别命令并执行命令对应程…

一个工程师的自我修养!

Datawhale干货 Tw93&#xff0c;前端工程师&#xff0c;Datawhale邀约作者对计算机科学的掌握程度&#xff0c;决定了一个计算机行业从业者能走多远。吴军博士在《浪潮之巅&#xff08;第四版&#xff09;》对工程师做了五个级别的划分&#xff1a;一级&#xff1a;能够开创一个…

询问ChatGPT来了解什么是边缘计算,有哪些特点,有哪些关键技术,和云计算的关系是什么?

什么是云计算 云计算是一种计算架构&#xff0c;它使用互联网作为基础设施&#xff0c;允许用户通过网络访问共享的计算资源&#xff0c;而不需要拥有专门的本地计算机硬件和软件。云计算提供了计算能力、存储空间、应用程序和服务等&#xff0c;并使用计费模型收取使用费用。…

springboot基于ssm框架实现的家具商城管理系统

一、项目简介 本项目是一套基于springboot框架实现的家具商城管理系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&#…

为什么在SPI通信中提供不同的模式?

SPI传输模式 因为SPI是全双工也就是说&#xff08;MOSI和MISO&#xff09;上同时发送和接收数据 时钟极性&#xff08;CPOL&#xff09; 时钟相位&#xff08;CPHA&#xff09;是定义SPI总线使用的时钟格式得主要参数&#xff0c;根据SPOL参数&#xff0c;SPI时钟可以是反向或…

寻找两个正序数组的中位数K个一组翻转链表

文章目录1. [寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/)2. [K个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/)1. 寻找两个正序数组的中位数 首先&#xff0c; 中位数的作用就是将正序数组的两端进行分…

[内网渗透]—权限维持

Skeleton Key(万能密码) 原理 当拿到域控权限后,使用mimikatz可以注入Skeleon Key,将 Skeleton Key 注入域控制器的 lsass.exe 进程,这样会在域内的所有账号中添加一个 Skeleton Key,而这个key是自己设定的所以可以随时共享访问。 PS:由于注入到lsass.exe进程中,所以每…

JS图解 | Java程序员的JS | 系统性学习 | 无知的我费曼笔记

无知的我正在复盘JS 该笔记特点是 重新整理了涉及资料的一些语言描述、排版而使用了自己的描述对一些地方做了补充说明。比如解释专有名词、类比说明、对比说明、注意事项提升了总结归纳性。尽可能在每个知识点上都使用一句话 || 关键词概括更注重在实际上怎么应用提出并回答了…

跟腾讯架构大师学网络框架与后台架构

目录 跟腾讯架构大师学网络框架与后台架构 单机服务 1、单机服务&#xff1a;基本概念 2、单机服务&#xff1a;同步阻塞​编辑 3、单机服务&#xff1a;异步非阻塞框架 4、单机服务&#xff1a;典型框架&#xff1a; 5、单机服务&#xff1a;协程框架 6、单机服务&…

Spring之自定义Bean何时被扫描注册?

1. 前言 在AnnotationConfigApplicationContext的构造函数里&#xff0c;Spring会创建AnnotatedBeanDefinitionReader对象&#xff0c;它的基本作用是将基于注解的BeanClass封装成BeanDefinition&#xff0c;并注册到BeanFactory中。同时AnnotatedBeanDefinitionReader的构造函…

计算机毕业设计springboot+vue景区疫情预警系统

项目介绍 本景区疫情预警系统是针对目前景区疫情预警的实际需求,从实际工作出发,对过去的景区疫情预警系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。 本系统结合计算机系统的结…

垃圾回收器

文章目录1. 垃圾回收器分类2. 不同垃圾回收器概述3. Serial与Serial Old垃圾回收器&#xff1a;串行回收4. ParNew垃圾回收器&#xff1a;并行回收5. Parallel与Parallel Old垃圾回收器&#xff1a;吞吐量优先6. CMS回收器&#xff1a;低延迟7. G1回收器&#xff1a;区域分代式…