2012-05-30 145 views

回答

14

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

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

+2

[当然是](http://en.cppreference.com/w/cpp/container/map/at)... –

+1

@KerrekSB(因为C++ 11)不知道。 –

28

如果您访问使用索引操作符[]不是当前地图的一部分,一键则自动为您的关键。这是一个巨大的警告,并考虑到这一点。为此,我更喜欢使用索引运算符[]进行设置,并且使用.find()/.at()进行查找。

使用.at()而不是[]的另一个优点是它可以在const std::map上运行,而[]不会。