在C++中通過aMap[key]
和aMap.at(key)
獲取值有什麼區別?C++中map []和map.at之間的區別?
16
A
回答
14
在C++ 11 map::at
存在(誰知道?)。
如果該鍵不存在,它拋出一個異常,find
返回aMap.end()
如果元素不存在,operator[]
如果沒有值存在有值初始化爲相應鍵的新值。
28
如果您訪問使用索引操作符[]
不是當前地圖的一部分,一鍵則自動爲您的關鍵。這是一個巨大的警告,並考慮到這一點。爲此,我更喜歡使用索引運算符[]
進行設置,並且使用.find()
/.at()
進行查找。
使用.at()
而不是[]
的另一個優點是它可以在const std::map
上運行,而[]
不會。
相關問題
- 1. Fork/Join和Map/Reduce之間的區別
- 2. C中的/ +和+之間的區別?
- 3. C#中char和int之間的區別#
- 4. C#中Convert.ToString()和.ToString()之間的區別?
- 5. C++中+ =和= +之間的區別
- 6. .map(...)和.map {...}在scala之間有什麼區別
- 7. C#「var」和C++「auto」之間的區別
- 8. C和C++之間的區別
- 9. 之間的區別:+和:+
- 10. Java和C#和.NET之間的區別
- 11. fmod和%之間的區別
- 12. `%in%`和`==`之間的區別
- 13. ==和case之間的區別?
- 14. std :: map insert()提示位置:C++ 98和C++之間的區別11
- 15. 之間的〜/和的區別../
- 16. c /#和#region之間的區別#
- 17. [abc]和(a | b | c)之間的區別
- 18. Ruby和C之間的主要區別
- 19. VS DataBreakpoints:C和C++之間的區別
- 20. objective-c @「hello」和「hello」之間的區別?
- 21. 「 - >」和「。」之間的區別用C
- 22. C和JAVA程序之間的區別
- 23. C++ 11 lambda:transform和for_each之間的區別
- 24. cout和C++之間的區別
- 25. lstat fstat和stat之間的區別C
- 26. Panel和UserControl之間的區別c#
- 27. C++ Builder - Lib和Res之間的區別
- 28. objective-c和java之間的區別
- 29. ASP.Net,C#.Net和VB.Net之間的區別?
- 30. Objective-C(null)和nil之間的區別
[當然是](http://en.cppreference.com/w/cpp/container/map/at)... –
@KerrekSB(因爲C++ 11)不知道。 –