2010-12-03 14 views

Respuesta

40

En caso de duda en cuanto a la semántica de una operación en un contenedor, consulte the documentation:

mapa tiene la importante propiedad de que la inserción de un nuevo elemento en una map no invalida iteradores que apuntan a elementos existentes.

Borrar un elemento de un map tampoco invalida ningún iterador, excepto, por supuesto, para los iteradores que realmente apuntan al elemento que se está borrando.

Esto se toma de la documentación de SGI STL. Si bien esta documentación técnicamente no especifica el comportamiento de los contenedores de la Biblioteca Estándar de C++, las diferencias son generalmente insignificantes, aparte de las partes de la STL que no son parte de la Biblioteca Estándar de C++, por supuesto.

La documentación de SGI STL es una referencia indispensable, especialmente si no tiene una copia del estándar de C++.

+4

+1, los documentos SGI son bastante buenos. La única mejor fuente de información, incluso si es más difícil de leer, es el estándar. Puede comprar su propia copia electrónica del estándar por alrededor de $ 30, o puede descargarla del codeassist de google [aquí] (http://openassist.googlecode.com/files/C%2B%2B%20Standard%20-%20ANSI % 20ISO% 20IEC% 2014882% 202003.pdf) –

8

Insertar en std :: map no invalida los iteradores existentes.

27

De norma 23.1.2/8

Los miembros de inserción no afectará a la validez de iteradores y referencias al contenedor, y los miembros de borrado invalidará sólo iteradores y las referencias al borrado elementos.

Cuestiones relacionadas