Lo que quiero decir es que sabemos que los std::mapelementos 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 234o se define su implementación?
Razón de la vida real: tengo una std::mapcon intllaves. En situaciones muy raras, me gustaría recorrer todos los elementos, con clave, mayor que un intvalor concreto . Sí, parece std::vectorque sería la mejor opción, pero observe mis "situaciones muy raras".
EDITAR : Sé que los elementos de std::mapestá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_boundpara encontrar el punto para comenzar a iterar.