나는 C++에서 std::list
클래스에 대해 알아 봤습니다. 궁금합니다. 간단히 말해서,리스트의 반복자가 작동하는 방식과 관련이있다. 다음 코드를 고려하십시오.표준 템플릿 라이브러리 목록 - 이중 연결 또는 순환 연결?
std::list<int> alist;
alist.push_back(0);
alist.push_back(1);
alist.push_back(2);
명백히 3 개의 정수 요소가있는 목록이 생성됩니다. 나는이 목록의 시작 반복자를 정의하고 다음과 같이 말, 첫 번째 요소에 포함 된 값을 출력하는 데 사용할 수 있습니다 : 나는 약간 이상한 찾을 무엇
std::list<int>::iterator iter = alist.begin();
std::cout << *iter << std::endl; // Prints "0" to stdout
입니다 만약 내가 지금 감소 반복자는, 그것은 "주위 루프"와 목록의 마지막 요소를 가리키는 끝 :
--iter;
std::cout << *iter << std::endl; // Prints "2" to stdout
가정으로 이중 연결리스트로 구현 뭔가이 합리적인 행동인가? 목록이 순환으로 연결된 목록 인 경우에는 반복기와 비슷한 동작을 기대할 수 있지만 매우 이상합니다.
과거에 사용한 적이있는이 반복자 동작을 실제로 사용할 수 있습니까? 이 행동과 관련된 문제가 있습니까?
이 (그건 그렇고,이 GCC 4.7.0 (는 MinGW)가 발생합니다. 나는 다른 버전 또는 컴파일러와 함께 그것을 테스트하지 않았습니다.)
그것은 나를 위해 -1218668059를 인쇄한다. http://ideone.com/3kpQf –