2012-05-30 144 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上運行,而[]不會。