2011-01-22 5 views
3

이 질문은 절름발이 일지 모르지만 명확한 대답을 찾지 못했습니다. 내가 mapfind() 메소드에 의해 반환 된 이터레이터가 다른 요소를 같은 map에 추가 (또는 제거)해도이 데이터를 가리키고 있다고 가정 할 수 있습니까? 그것은 나를 위해 불분명 경우 map 또는 특정 데이터의 위치에 map의 반복자 포인트 ...C++ 컨테이너의 반복자

답변

10

당신은 insert 또는 erase 작업 후 동일한 반복자를 계속 사용할 수 있습니다. 삽입 회원 컨테이너에 반복자와 참조의 유효성에 영향을 미치지 아니한다

및 삭제 회원 전용 반복자를 무효화한다 표준은 (C++ 03 표준, 제 23.1.2 조 8) 말한다 지워진 요소에 대한 참조 등이 있습니다.

이 모든 연관 컨테이너 (map, set, multimap, multiset)도 마찬가지이다.

+0

+1 (신뢰할 수있는 참조 용) (http://www.sgi.com/tech/stl/Map.html) –

+0

또한 unordered_map과 같은 TR1 컨테이너에도 사용됩니까? C++ 0x는 iterator 정의를 변경하지 않는다고 가정합니다. – Goofy

+1

@Goofy : 관심있는 특정 컨테이너에 대한 요구 사항을 확인해야합니다. 예를 들어 위에서 설명한 보증은 std :: list에는 해당되지만 std :: deque 또는 std :: vector에는 해당되지 않습니다. –