C++官网参考链接:https://cplusplus.com/reference/map/map/operator[]/
公有成员函数
形参
k
访问其映射值的元素的键值。
成员类型key_type是容器中存储的元素的键的类型,在map中定义为其第一个模板形参(Key)的别名。
如果是右值(第二个版本),则在插入新元素时将移动键而不是复制键。
返回值
对元素的映射值的引用,其键值等价于k。
成员类型mapped_type是容器中映射值的类型,在map中定义为其第二个模板形参(T)的别名。
用例
// accessing mapped values
#include
#include
int main ()
{
std::map
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)),它将导致未定义的行为。