在C ++中通过aMap[key]
和aMap.at(key)
获取值有什么区别?
答案 0 :(得分:31)
如果您使用当前不属于地图的索引编制人员[]
来访问密钥,则 会自动为您添加密钥 。这是一个巨大的警告,并考虑到这一点。出于这个原因,我更喜欢使用索引运算符[]
进行设置,并使用.find()
/ .at()
进行查找。
使用.at()
优于[]
的另一个好处是,它可以在const std::map
上运行,而[]
则不会。{/ p>
答案 1 :(得分:16)
在C ++ 11中map::at
存在(谁知道?)。
如果密钥不存在则抛出异常,find
如果元素不存在则返回aMap.end()
,operator[]
值初始化如果没有值,则为相应键的新值。