Trong hướng dẫn này, ta thảo luận về iterator invalidation trong C++.
Khi duyệt container, iterator có thể bị vô hiệu hóa nếu thay đổi kích thước/hình dạng container (ví dụ push_back vào vector đang duyệt).
Ví dụ
#include <bits/stdc++.h> using namespace std; int main() { vector <int> v{1, 5, 10, 15, 20}; for (auto it=v.begin(); it!=v.end(); it++) if ((*it) == 5) v.push_back(-1); for (auto it=v.begin(); it!=v.end(); it++) cout << (*it) << " "; return 0; }Đầu ra
1 5 10 15 20 -1 -1
(Có thể xảy ra lỗi nếu vector được cấp phát lại bộ nhớ, iterator cũ trỏ đến vùng nhớ cũ).