SORU
4 EKİM 2011, Salı


Std yineleme sırasıdır::map bilinen (ve standart garanti)?

Demek istediğim - std::map'nin elemanları tuşlara göre sınıflandırılmaktadır. Hadi anahtarları tamsayı olduğunu söylüyor. std::map::end() std::map::begin() ** 4, mu dolayısıyla tuşları ile öğeleri arasında yineleme edeceğim standart garanti kullanıyorum yineleme, artan düzende sıralanmış?


Örnek:

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;
}

Bu baskı için garantili 234 veya uygulama tanımlı mı?


Gerçek hayat sebebi: std::map int Bir anahtarım var. Çok nadir durumlarda, tüm elemanları, anahtar ile, bir beton daha büyük bir yineleme gitmek istiyorum int değer. , std::vector daha iyi bir seçim olurdu gibi geliyor, ama dikkat edin "çok nadir durumlarda". Evet benim


EDİT: I std::map öğeleri belirtmek gerek (cevapları burada çoğu).. sınıflandırılmaktadır. Ben sorumu bile yazmıştı.
Bu kullanımına ve bir kap yineleme olduğumda sipariş soruyordum. Teşekkürler @cevap için SB Kerrek.

CEVAP
4 EKİM 2011, Salı


Evet, orası garanti. Ayrıca, *begin() size en küçüğü ve *rbegin() en büyük unsur olarak belirlenerek, karşılaştırma operatörü ve iki anahtar değerleri a b için hangi ifade !compare(a,b) && !compare(b,a) doğru eşit olduğu düşünülür. Varsayılan karşılaştırma std::less<K> işlevi.

Sipariş veren bir şanslı bonus, daha ziyade, bir yönüyle temel veri yapısı olarak sipariş belirlemek için kullanılır zaman iki anahtar aynı (yukarıdaki kuralı) ve gerçekleştirmek için verimli arama (aslında bir ikili arama, logaritmik karmaşıklık sayısı unsurları).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • TROPFEST

    TROPFEST

    27 Mart 2007
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009