map<string, string> dada;
dada["dummy"] = "papy";
cout << dada["pootoo"];
我很困惑,因为我不知道它是否被认为是未定义的行为,如何知道我何时请求一个不存在的 key ,我是否只使用 find 代替?
最佳答案
map::operator[]
在数据结构中搜索与给定键对应的值,并返回对它的引用。
如果找不到它,它会透明地为其创建一个默认构造元素。 (如果您不想要这种行为,您可以改用 map::at
函数。)
您可以在此处获取 std::map 方法的完整列表:
http://en.cppreference.com/w/cpp/container/map
这是当前 C++ 标准中 map::operator[]
的文档...
23.4.4.3 map 元素访问
T& operator[](const key_type& x);
效果:如果map中没有与x等效的key,则将value_type(x, T())插入map中。
要求:key_type 应为 CopyConstructible,mapped_type 应为 DefaultConstructible。
返回:对 *this 中 x 对应的 mapped_type 的引用。
复杂度:对数。
T& 运算符[](key_type&& x);
效果:如果map中没有与x等效的key,则将value_type(std::move(x), T())插入map中。
要求:mapped_type 应为 DefaultConstructible。
返回:对 *this 中 x 对应的 mapped_type 的引用。
复杂度:对数。
关于c++ - 如果我读取不存在键的 map 值会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10124679/