본문 바로가기

C/C++

list iterator not incrementable 에러

반응형

객체를 지우는 과정에서 나온 런닝 에러, 처음보는 에러에 당황했지만 바로 검색 ㄱㄱ


list iterator not incrementable ==> 말 그대로 리스트의 위치를 가르키는 iterator이

더이상 증가 할 수 없다는 뜻이었다...


그럼 이 에러가 왜 발생했는가????

erase(llist iterator); 함수는 llist iterator 인자값 위치를 지우고 다음 위치를 리턴하는 함수이다.


erase();함수가 다음 위치를 리턴하는 줄을 몰랐던 것이다.......ㅠㅠ


그렇다면 llist iterator가 가리키는 값을 깨끗하게 지우는 법은?

std::list<int*>::iterator it;

for(it  = Object.begin();     it != Object.end();     비워둘것! )

{

if(조건문)

{

delete(*it);

it = Object.erase(it);

}

else

it++;

}

이런식으로 지우는 거라고 합니다.


반응형