2012-05-30 15 views

Respuesta

14

En C++ 11 map::at existe (¿quién sabe?).

Se lanza una excepción si no existe la clave, find vuelve aMap.end() si el elemento no existe, y operator[]valor inicializa un nuevo valor de la clave correspondiente, si ningún valor existe allí.

+2

[Por supuesto que sí] (http://en.cppreference.com/w/cpp/container/map/at) ... –

+1

@KerrekSB (desde C++ 11) no lo sabía. –

28

Si tiene acceso a una clave mediante el operador de indexación [] que no está en una parte de un mapa, entonces añade automáticamente una clave para usted. Esta es una gran advertencia, y tome esto en consideración. Por esta razón, prefiero usar el operador de indexación [] para la configuración, y .find()/.at() para la búsqueda.

Otra ventaja de usar .at() sobre [] es el hecho de que puede funcionar en una const std::map, mientras que [] no lo hará.

Cuestiones relacionadas