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

unj*_*nj2 18 c++ stl c++11

是什么在通过获得一个价值的差额aMap[key],并aMap.at(key)在C++?

Ric*_*III 31

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

使用的另一个优点.at()在[]是,它可以在一个操作的事实const std::map,而[]不会.


Luc*_*ore 16

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

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

  • [当然可以](http://en.cppreference.com/w/cpp/container/map/at)... (2认同)