Lo que quiero decir es que sabemos que los std::map
elementos están ordenados según las claves. Entonces, digamos que las claves son enteros. Si iterate de std::map::begin()
que std::map::end()
el uso de un for
, hace la garantía estándar que voy a iterar por consiguiente, a través de los elementos con claves, en orden ascendente?
Ejemplo:
std::map<int, int> map_;
map_[1] = 2;
map_[2] = 3;
map_[3] = 4;
for( std::map<int, int>::iterator iter = map_.begin();
iter != map_.end();
++iter )
{
std::cout << iter->second;
}
¿Se garantiza que se imprima 234
o se define su implementación?
Razón de la vida real: tengo una std::map
con int
llaves. En situaciones muy raras, me gustaría recorrer todos los elementos, con clave, mayor que un int
valor concreto . Sí, parece std::vector
que sería la mejor opción, pero observe mis "situaciones muy raras".
EDITAR : Sé que los elementos de std::map
están ordenados ... no es necesario señalarlo (para la mayoría de las respuestas aquí). Incluso lo escribí en mi pregunta.
Estaba preguntando sobre los iteradores y el orden cuando estoy iterando a través de un contenedor. Gracias @Kerrek SB por la respuesta.
map::upper_bound
para encontrar el punto para comenzar a iterar.