map<string, string> dada;
dada["dummy"] = "papy";
cout << dada["pootoo"];
Run Code Online (Sandbox Code Playgroud)
我很困惑,因为我不知道它是否被认为是未定义的行为,如何知道我何时请求一个不存在的密钥,我只是使用find而不是?
And*_*zos 66
在map::operator[]搜索对应于给定键的值,并返回一个参考给它的数据结构.
如果找不到它,它会透明地为它创建一个默认的构造元素.(如果您不想要此行为,则可以使用该map::at功能.)
你可以在这里获得std :: map的完整方法列表:
http://en.cppreference.com/w/cpp/container/map
这是map::operator[]来自当前C++标准的文档......
T& operator[](const key_type& x);效果:如果地图中没有等效于x的键,则将value_type(x,T())插入到地图中.
要求:key_type应为CopyConstructible,mapped_type应为DefaultConstructible.
返回:对*this中x对应的mapped_type的引用.
复杂性:对数.
T& operator[](key_type&& x);效果:如果地图中没有等效于x的键,则将value_type(std :: move(x),T())插入到地图中.
要求:mapped_type应为DefaultConstructible.
返回:对*this中x对应的mapped_type的引用.
复杂性:对数.
Moh*_*ber 16
如果您尝试访问key value使用索引运算符[],则可能发生以下两种情况:
key.所以它会返回相应的key value.key.在这种情况下,它会自动添加key到地图中null value."pootoo"您的地图中不存在密钥.因此,它会自动添加这key与value = ""(空字符串).并且您的程序将打印空字符串.
这里地图大小会增加1.
要搜索您可以使用的密钥map_name.find(),map_name.end()如果该密钥不存在,将返回该密钥.并且不会key添加额外的内容.
如果[]要为键设置值,可以使用运算符.
| 归档时间: |
|
| 查看次数: |
55934 次 |
| 最近记录: |