2012-05-23 1 views
1

개체가있는 std::list 두 개가 있습니다 (source_listnew_list). 목표는 new_list에서 position_at_source_to_adding_new_fromsteps_between_new으로 시작하는 source_list에 개체를 추가하는 것입니다. cpp std :: list 스테핑을 사용하여 새 요소 추가

steps의 문제

: source_list 짧은에 수 있으며 new_list가 될 수 있습니다 대형 (또는 steps 큰까지)과에 std::advance(it, steps_between_new) 반복자를 수행하는 source_list의 범위를 넘어 갈 수와는 undefined behavior 될 때.

std::advance 전후에 반복기를 확인하여 범위에 있는지 확인하는 방법은 무엇입니까? 그리고 new_list에 더 많은 객체가있을 때 그 객체 사이에 단계를 추가 할 수 있습니다. 객체를 소스 목록의 끝에 간단하게 추가해야합니다.

ps. 나의 영어에 유감스럽게 생각한다, 모국어가 아니라에 설명하는 것이 어렵다. 어떤 수정도 내 텍스트를 환영합니다. 감사.

+0

가능한 반복자 [반복자가 overpass end()를 사용하지 않도록하는 방법?] (http://stackoverflow.com/questions/3856416/how-to-make-sure-iterators-do-not-overpass-end) – Jon

+0

@ 존 아니, 왜냐하면 두 가지의 크기를 고려하여 설명한대로 두 목록을 병합하는 가장 좋은 방법을 찾는 작업이 있기 때문입니다. 뿐만 아니라 '어떻게 오버 패스 (overpass)하지 않습니까?'. – abrahab

+0

그럼 그 질문에 대한 답을 읽고 도움을받지 못했습니까? – Jon

답변

2

advance을 호출하는 대신 필요한만큼 여러 번 ++iterator을 호출하면됩니다. 각 호출 후에 이터레이터를 end()과 비교하십시오.

관련 문제