สิ่งที่ฉันหมายถึงคือ - เรารู้ว่าstd::map
องค์ประกอบของเรียงตามคีย์ สมมุติว่ากุญแจนั้นเป็นจำนวนเต็ม หากฉันซ้ำจากstd::map::begin()
การstd::map::end()
ใช้ a for
การรับประกันมาตรฐานจะให้ฉันทำซ้ำตามลำดับผ่านองค์ประกอบที่มีคีย์เรียงตามลำดับจากน้อยไปหามากหรือไม่
ตัวอย่าง:
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;
}
สิ่งนี้รับประกันว่าจะพิมพ์234
หรือมีการกำหนดการใช้งานหรือไม่
เหตุผลชีวิตจริง: ฉันมีstd::map
กับint
คีย์ ในสถานการณ์ที่หายากมากฉันต้องการวนซ้ำองค์ประกอบทั้งหมดด้วยคีย์มากกว่าint
ค่าที่เป็นรูปธรรม ใช่ดูเหมือนstd::vector
จะเป็นตัวเลือกที่ดีกว่า แต่สังเกต "สถานการณ์ที่หายากมาก" ของฉัน
แก้ไข : ฉันรู้ว่าองค์ประกอบของstd::map
เรียงลำดับ .. ไม่จำเป็นต้องชี้ให้เห็น (สำหรับคำตอบส่วนใหญ่ที่นี่) ฉันยังเขียนไว้ในคำถามของฉัน
ฉันถูกถามเกี่ยวกับตัววนซ้ำและลำดับเมื่อฉันวนซ้ำผ่านคอนเทนเนอร์ ขอบคุณ @Kerrek SB สำหรับคำตอบ
map::upper_bound
เพื่อหาจุดที่จะเริ่มทำซ้ำ