Chodzi mi o to - wiemy, że std::map
elementy są posortowane według kluczy. Powiedzmy, że klucze są liczbami całkowitymi. Jeśli wykonam iterację od std::map::begin()
do std::map::end()
a for
, czy standard gwarantuje, że będę konsekwentnie przechodzić przez elementy z kluczami posortowane w kolejności rosnącej?
Przykład:
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;
}
Czy jest to gwarantowane do druku, 234
czy jest to zdefiniowana implementacja?
Powód z życia: mam klucz std::map
z int
kluczami. W bardzo rzadkich sytuacjach chciałbym powtórzyć wszystkie elementy, z kluczem, większym niż konkretna int
wartość. Tak, wygląda na to, że std::vector
byłby to lepszy wybór, ale zwróć uwagę na moje „bardzo rzadkie sytuacje”.
EDYCJA : Wiem, że elementy std::map
są posortowane… nie trzeba na to zwracać uwagi (dla większości odpowiedzi tutaj). Napisałem to nawet w swoim pytaniu.
Pytałem o iteratory i kolejność, gdy przechodzę przez kontener. Dzięki @Kerrek SB za odpowiedź.
map::upper_bound
aby znaleźć punkt do rozpoczęcia iteracji.