btfnswt   3년 전

오늘 처음 STL list를  사용해봐서 연습겸 이걸 사용해서 풀어보고 있습니다..

이 코드에 input으로 7,3을 넣고 디버깅을 하면 it가 list의 마지막 요소를 참조할 때 it++를 수행하면서 'cannot increment end list iterator'라는 메세지를 뿜고 강제 중단됩니다. 

iterator가 반복자니까 맨 앞으로 돌아갈 줄 알았는데 안되네요..

아직 많이 수행을 못해봐서 로직이 맞는지도 모르겠지만 저 에러나는 부분을 어떻게 해결해야 하는지 도와주시면 감사하겠습니다.

luniro   3년 전

끝에 도달하면 처음으로 되돌리면 되지 않나요?

if ( it == L.end() ) it = L.begin();

pichulia   3년 전

std::list<int>::iterator 의 ++연산자에는 그런 기능이 없습니다. 위 댓글처럼 반복자를 맨 앞으로 돌리시거나, 필요하면 원하는대로 동작하도록 직접 구현하셔야합니다.

한국어로 번역한 결과가 '반복자'라고 해서 진짜로 '반복'하는건 아닙니다;;

btfnswt   3년 전

감사합니다. 하나 더 질문해도 될까요?

이건 질문방에서 본 코드인데 앞의 분 말씀처럼 반복자를 맨 앞으로 돌려주진 않았는데 정상 작동이 됩니다.

제가 볼 땐 잘 모르겠어서 뭔가 처리된 부분이 있을까요?

luniro   3년 전

22번째 줄에서 it == L.end()가 되면 for문을 탈출하고, 다시 21번째 줄의 while 때문에 22번째 줄에서 it = L.begin()로 바뀝니다

it가 L.end() - 1일 때부터 따라가보세요

btfnswt   3년 전

아!!! 감사합니다

댓글을 작성하려면 로그인해야 합니다.