이 튜토리얼에서는 C++의 반복자 무효화를 이해하는 프로그램에 대해 설명합니다.
컨테이너 객체의 요소를 반복하는 동안 경계 검사를 적용하지 않으면 때때로 무효화될 수 있습니다. 이는 주로 컨테이너 개체의 모양과 크기의 변화로 인해 발생합니다.
예시
#include <bits/stdc++.h> using namespace std; int main() { //declaring a vector vector <int> v{1, 5, 10, 15, 20}; //changing vector during execution //which will cause bound invalidation 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; }
출력
1 5 10 15 20 -1 -1
(새 요소를 추가하기 위해 벡터가 새 위치에 복사되고 반복자가 여전히 이전 위치를 가리키고 있으므로 오류가 발생할 수도 있습니다.)