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 234
mu yoksa uygulama tanımlanmış mı?
Gerçek hayat nedeni: Anahtarları olan bir a std::map
var int
. Çok nadir durumlarda, somut bir int
değerden daha büyük, tüm unsurları tekrarlamak isterim . Evet, std::vector
daha iyi bir seçim gibi görünüyor , ama "çok nadir durumlar" a dikkat edin.
DÜZENLEME : Biliyorum, öğeleri std::map
sı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 .