2017-04-15 1 views
-2

STL 벡터의 특정 위치에 어떻게 삽입 하시겠습니까?반복자 재 할당 [REWRITTEN]

지금까지, 정말 같은 STL 벡터에 삽입 시도했다 :

someVector.insert(someVector.begin() + location, info); 

나는 순서대로 항목을 삽입하고있을 때이 작품,하지만 난 벡터에서 항목을 삭제하면, 내가되고 싶어 그 위치에 삽입 할 수 있습니다. 그러나 iterator는 "vector iterator + offset out of range"오류를 발생시키기 때문에 재 할당해야합니다. (저는 C++ 반복자에 익숙하지 않아서 "반복자 재 할당"이 무엇인지 잘 모르기 때문에 좋은 설명을 찾을 수없는 것 같습니다. 설명해 주실 수 있으면 기쁘게 생각합니다!) 많이 찾을 수 있습니다. 반복자를 재 할당해야 할 때 묻는 질문은 있지만 가장 좋은 방법은 아닙니다. 또는 한 위치에 다른/더 좋은 방법으로 삽입 할 수 있습니까?

+0

다른 컨테이너를 사용해야합니다. 그런 파도에 맞서 싸우고 있다면, 당신은 당신의 가정을 재검토해야합니다. 아마도 벡터는 올바른 컨테이너가 아닙니다. –

+2

반복자를 "재 할당"한다는 것이 무슨 뜻인지 명확하지 않습니다. – aschepler

답변

2

벡터에 대한 지우기 연산은 방금 삭제 된 요소를 지나서 반복기 1을 반환합니다. 해당 반복자를 다음 삽입 위치로 사용하여 지운 위치의 "장소"에 삽입 할 수 있습니다.

auto it = v.begin() + 3; // say 

it = v.erase(it);   // erase and store position 
v.insert(it, -3);   // insert at that position 
+0

[데모] (https://ideone.com/fDvE48) –