O que quero dizer é - sabemos que os std::mapelementos do são classificados de acordo com as chaves. Então, digamos que as chaves sejam números inteiros. Se eu iterar de std::map::begin()para std::map::end()usar a for, o padrão garante que eu iterarei consequentemente através dos elementos com chaves, classificados em ordem crescente?
Exemplo:
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;
}
Isso é garantido para impressão 234ou sua implementação está definida?
Razão da vida real: eu tenho um std::mapcom intchaves. Em situações muito raras, eu gostaria de percorrer todos os elementos, com chave, maior que um intvalor concreto . Sim, parece que std::vectorseria a melhor escolha, mas observe minhas "situações muito raras".
EDIT : Eu sei, que os elementos de std::mapsão classificados .. não há necessidade de apontar (para a maioria das respostas aqui). Eu até escrevi na minha pergunta.
Eu estava perguntando sobre os iteradores e o pedido quando estou iterando através de um contêiner. Obrigado @Kerrek SB pela resposta.
map::upper_boundpara encontrar o ponto para começar a iterar.