프로그래밍/C++2016. 3. 30. 11:10

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

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

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

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

{

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

else{_vi++}

}

 

 

'프로그래밍 > C++' 카테고리의 다른 글

함수포인터 활용  (0) 2016.09.01
c++ 파일 입출력 (텍스트 파일을 읽어서 원하는 정보 얻어오기)  (1) 2016.08.11
벡터 clear  (0) 2016.07.13
프로그램 진행시간 측정 하는법.  (0) 2016.04.02
첫글  (0) 2016.02.22
Posted by JinFluenza