C ++中map []和map.at之间的区别?

时间:2012-05-30 17:38:15

标签: c++ c++11 stl

在C ++中通过aMap[key]aMap.at(key)获取值有什么区别?

2 个答案:

答案 0 :(得分:31)

如果您使用当前不属于地图的索引编制人员[]来访问密钥,则 会自动为您添加密钥 。这是一个巨大的警告,并考虑到这一点。出于这个原因,我更喜欢使用索引运算符[]进行设置,并使用.find() / .at()进行查找。

使用.at()优于[]的另一个好处是,它可以在const std::map上运行,而[]则不会。{/ p>

答案 1 :(得分:16)

在C ++ 11中map::at存在(谁知道?)。

如果密钥不存在则抛出异常,find如果元素不存在则返回aMap.end()operator[] 值初始化如果没有值,则为相应键的新值。