Ý tôi là - chúng ta biết rằng các std::mapyếu tố của được sắp xếp theo các phím. Vì vậy, giả sử các khóa là số nguyên. Nếu tôi lặp lại từ std::map::begin()việc std::map::end()sử dụng a for, liệu có đảm bảo tiêu chuẩn rằng tôi sẽ lặp lại thông qua các phần tử với các khóa, được sắp xếp theo thứ tự tăng dần không?
Thí dụ:
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;
}
Điều này có được đảm bảo để in 234hoặc nó được thực hiện được xác định?
Lý do thực tế cuộc sống: Tôi có một std::mapvới intcác phím. Trong các tình huống rất hiếm, tôi muốn lặp lại qua tất cả các yếu tố, với khóa, lớn hơn một intgiá trị cụ thể . Đúng, có vẻ như std::vectorsẽ là lựa chọn tốt hơn, nhưng hãy chú ý "những tình huống rất hiếm" của tôi.
EDIT : Tôi biết, các yếu tố std::mapđược sắp xếp .. không cần phải chỉ ra (đối với hầu hết các câu trả lời ở đây). Tôi thậm chí đã viết nó trong câu hỏi của tôi.
Tôi đã hỏi về các trình vòng lặp và thứ tự khi tôi lặp qua một container. Cảm ơn @Kerrek SB đã trả lời.
map::upper_boundđể tìm điểm bắt đầu lặp lại.