C,C++
[MFC] CList 순회시 요소 RemoveAt으로 제거하기
티바이트
2014. 11. 11. 22:53
GetNext()는 pos값을 다음 값으로 만들기 때문에
먼저 임시변수를 만들어 현재 pos값을 저장해두고 그 임시변수 위치에 해당하는 요소를 지워야 한다.
POSITION pos = list.GetHeadPosition();
POSITION posTemp;
while(pos != NULL) {
posTemp = pos;
CMyType myType = list.GetNext(pos);
if(....CMyType이 요소삭제조건일 때) {
list.RemoveAt(posTemp);
}
}
POSITOIN타입이
typedef __POSITION* POSITION;
와 같이 정의되어있기 때문에 getNext()에서 pos값을 변경할 수 있는것이다.