Iterator 무효화
vector v(10, 1);
vector::iterator p = v.begin();
cout << *p << endl;
v.resize(20);
cout << *p << endl;
이경우 기존 생성한 iterator는 무효화 된다. 실행시 마지막 라인에서 run-time error가 발생한다.하지만 size를 줄이는 경우는 해당되지 않는다.
vector v(10, 1);
vector::iterator p = v.begin();
cout << *p << endl;
v.resize(5);
cout << *p << endl;
이유는 container 재할당 시 크기가 클 경우 메모리를 재할당 하고 작을 경우 기존 메모리를 활용하는데, Iterator는 내부에 container의 메모리에 대한 pointer를 가지고 있기 때문에 resize()의하여 메모리를 재할당 할 경우 Iterator 무효화가 발생한다.
댓글
댓글 쓰기