프로그래밍/C++

벡터에서 erase사용시 주의할것.

JinFluenza 2016. 3. 30. 11:10

벡터에서 erase를 사용하면 해당 원소가 사라지고 뒤에것들이 앞으로 떙겨지게 된다.

그런데 만약에 이터레이터값을 이용해 반복문을 수행하고 있으면, 이터레이터++ 이것 때문에 문제가 발생할수 있다.

이를 방지하려면 코드를 이렇게 짜면 된다.

for(vi=v.begin(); vi != v.end(); )

{

if(삭제조건){  _vi=_v.erase(_vi);}   //이레이즈를 하게되면 지워진 원소의 다음번 이터레이터를 반환한다.

else{_vi++}

}