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
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ı).
Nasıl her dosya/dizin standart C ardış...
C standart tamponlar null onların term...
Baskı için olası bir değişken'sta...
Özel sınıflar standart C kütüphanesind...
Neden&; dizi yineleme için... "* o kad...