2 std :: lists가 있습니다. 목록 1에서 모든 항목을 삭제하고 두 번째 항목에 삽입하고 그 반대의 경우도 마찬가지입니다. 내 코드가 작동하지 않는 두번째 방법iterator erase "디버그 어설 션 실패"
for (std::list<Item *>::iterator it = list1.begin(); it != list1.end(); ++it) {
it = list1.erase(it);
list2.push_back(*it);
}
it = list1.begin();
it = list2.erase(it); // because the last element is not deleted in the above loop
list2.push_back(*it);
대칭 코드 (액세스 위반 "리스트 반복자 dereferencable하지"를 받고). 두 목록 사이에 항목을 한 번 전송할 수 있지만 그 다음 오류가 발생합니다.
어떤 도움이 필요합니까?
'std :: swap (list1, list2)'? – Johnsyweb
@Johnsyweb'std :: list :: swap' 멤버 함수는 일정 시간 보장됩니다. 두 개의 포인터 (아마도 C++ 11의 크기 데이터 멤버)를 교환해야합니다. – juanchopanza
@ juanchopanza : 분명히 좋을 것 같습니다. 'std :: swap' 함수는 여전히 제시된 구현보다 더 잘 수행 될 것입니다. – Johnsyweb