Quello che voglio dire è che sappiamo che gli std::map
elementi sono ordinati in base alle chiavi. Quindi, supponiamo che le chiavi siano numeri interi. Se mi iterare da std::map::begin()
a std::map::end()
utilizzare un for
, fa la garanzia standard che io iterare di conseguenza attraverso gli elementi con chiavi, in ordine crescente?
Esempio:
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;
}
La stampa 234
è garantita o l'implementazione è definita?
Motivo della vita reale: ho un std::map
con le int
chiavi. In situazioni molto rare, vorrei scorrere tutti gli elementi, con la chiave, più di un int
valore concreto . Sì, sembra che std::vector
sarebbe la scelta migliore, ma nota le mie "situazioni molto rare".
EDIT : So che gli elementi di std::map
sono ordinati .. non c'è bisogno di segnalarlo (per la maggior parte delle risposte qui). L'ho anche scritto nella mia domanda.
Stavo chiedendo degli iteratori e dell'ordine quando sto iterando attraverso un contenitore. Grazie @Kerrek SB per la risposta.
map::upper_bound
il punto per iniziare a iterare.