Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ 프로그램의 반복자 무효화


이 튜토리얼에서는 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

(새 요소를 추가하기 위해 벡터가 새 위치에 복사되고 반복자가 여전히 이전 위치를 가리키고 있으므로 오류가 발생할 수도 있습니다.)