Đối với các thùng chứa liên kết, toán tử ++ có thể gửi một trình lặp qua cuối bộ sưu tập không?Trình lặp của bản đồ STL có thể vượt quá giới hạn thông qua việc gia tăng không?
Ví dụ:
map<UINT32, UINT32> new_map;
new_map[0] = 0;
new_map[1] = 1;
map<UINT32, UINT32> new_iter = new_map.begin();
++new_iter;
++new_iter;
++new_iter;
++new_iter;
++new_iter;
++new_iter;
++new_iter;
Vào cuối này, không new_iter == new_map.end(), hoặc dùng nó kết thúc trong các bí ẩn lớn?
Lưu ý: Tôi biết điều này là sai lầm và không phải là cách để làm việc. Tôi đang làm việc xung quanh một số mã công ty WTF.
Vì vậy, bạn đã biên soạn nó và kiểm tra xem nó sẽ là new_map.end() ở cuối? Có lẽ cách dễ nhất để trả lời một câu hỏi như thế này nếu bạn không chắc chắn. – Goz
@Goz: Không, điều đó sẽ chỉ trả lời những gì một triển khai đang thực hiện. – sbi
Bản sao có thể có của [Điều gì sẽ xảy ra nếu bạn tăng một trình lặp lại bằng với trình lặp kết thúc của một container STL] (https://stackoverflow.com/questions/1057724/what-happens-if-you-increment-an-iterator -that-is-equal-to-the-end-iterator-of-a) – Raedwald