C++ Reference: Standard C++ Library reference: Containers: map: map: operator[]
创始人
2024-04-24 19:14:52
0

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

公有成员函数 

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
#include
#include

int main ()
{
  std::map 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)),它将导致未定义的行为。  

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...