Ý tôi là - chúng ta biết rằng các std::map
yế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 234
hoặ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::map
với int
cá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 int
giá trị cụ thể . Đúng, có vẻ như std::vector
sẽ 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.