如果密钥不是映射中的初始化密钥,STL映射[key]会返回什么?

Mir*_*rza 23 c++ stl map

这是一些示例代码:

 #include<iostream>
 #include<map>
 #include<string>
 using namespace std;

 int main()
 {
   map<char, string> myMap;
   myMap['a'] = "ahh!!";
   cout << myMap['a'] << endl << myMap['b'] << endl;
   return 0;
 }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想知道myMap ['b']返回什么?

Jam*_*lis 31

将一个默认构造的std::stringins插入到std::mapwith键'b'中,并返回对它的引用.

查阅文档通常很有用,文档定义了operator[]as 的行为:

返回对与特定键关联的对象的引用.如果地图尚未包含此类对象,请operator[]插入默认对象data_type().

(SGI STL文档不是C++标准库的文档,但它仍然是一个非常宝贵的资源,因为标准库容器的大部分行为与SGI STL容器的行为相同或非常接近.)


小智 5

返回默认构造的对象(例如,在这种情况下为空字符串)。

实际上,即使您说了也要返回map['a'] = "ahh!!";。[]运算符在位置'a'处插入默认构造的字符串,并返回对其的引用,然后调用=运算符。