What is the difference in getting a value through aMap[key]
and aMap.at(key)
in C++?
Asked
Active
Viewed 1.4k times
28

Ruggero Turra
- 16,929
- 16
- 85
- 141

unj2
- 52,135
- 87
- 247
- 375
2 Answers
44
If you access a key using the indexing operator []
that is not currently a part of a map, then it automatically adds a key for you. This is a huge caveat, and take this into consideration. For this reason, I prefer using the indexing operator []
for setting, and .find()
/ .at()
for lookup.
Another advantage of using .at()
over []
is the fact that it can operate on a const std::map
, whereas []
won't.

Richard J. Ross III
- 55,009
- 24
- 135
- 201
25
In C++11 map::at
exists (who knew?).
It throws an exception if the key doesn't exist, find
returns aMap.end()
if the element doesn't exist, and operator[]
value-initializes a new value for the corresponding key if no value exists there.

Luchian Grigore
- 253,575
- 64
- 457
- 625
-
1@KerrekSB (since C++11) didn't know that though. – Luchian Grigore May 30 '12 at 17:50