O que quero dizer é - sabemos que os std::map
elementos 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 234
ou sua implementação está definida?
Razão da vida real: eu tenho um std::map
com int
chaves. Em situações muito raras, eu gostaria de percorrer todos os elementos, com chave, maior que um int
valor concreto . Sim, parece que std::vector
seria a melhor escolha, mas observe minhas "situações muito raras".
EDIT : Eu sei, que os elementos de std::map
sã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_bound
para encontrar o ponto para começar a iterar.