Demek istediğim - std::mapöğelerinin anahtarlara göre sıralandığını biliyoruz . Diyelim ki anahtarlar tamsayı. I yinelerler Eğer std::map::begin()için std::map::end()bir kullanma for, ben tuşlarıyla elemanları aracılığıyla dolayısıyla yineleme edeceğiz standart garanti yapar, artan düzende sıralanır?
Misal:
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;
}
Bunun yazdırılması garanti ediliyor 234mu yoksa uygulama tanımlanmış mı?
Gerçek hayat nedeni: Anahtarları olan bir a std::mapvar int. Çok nadir durumlarda, somut bir intdeğerden daha büyük, tüm unsurları tekrarlamak isterim . Evet, std::vectordaha iyi bir seçim gibi görünüyor , ama "çok nadir durumlar" a dikkat edin.
DÜZENLEME : Biliyorum, öğeleri std::mapsıralanmıştır .. işaret etmek gerek (burada cevapların çoğu için). Hatta soruma yazdım bile.
Bir konteynerden yinelediğimde yineleyiciler ve düzen hakkında soruyordum. Cevap için @Kerrek SB'e teşekkürler.
map::upper_bound, yinelemeye başlama noktasını bulmak için kullanabilirsiniz .