2014-04-13 2 views
3

컨텍스트 : 끊임없이 반복되지만 초기화 후 최소 삽입이있는 알 수없는 크기의 데이터 세트입니다 (초기화시의 속도는 중요하지 않음).C++ - 벡터 삽입 - 반복자 이전 또는 이후?

우리 vector.begin에 삽입하면

는 벡터가 비어있을 때(), 그 어드레스 .begin에서 소자를 작성()

혼란 벡터에 삽입 한 후 성분 위치 이상이다.

벡터가 비어 있지 않을 때 vector.begin()에 삽입하면 .begin()에서 기존 요소를 앞으로 이동하거나 .begin() 뒤에 새 요소를 배치합니까? 벡터 위에 새로운 요소를 삽입하기 전에 벡터 요소의 특정 조건과 일치하는 반복하는 경우는 다음과 같이

마찬가지로, 우리는 삽입하면 : vector.insert (반복자 new_element)를

그것이 삽입 않음을 현재 반복 된 요소 뒤의 요소 또는 그 전에? 미리 감사드립니다. M

답변

6

std::vector::insert()에 cppreference을 인용 :

인서트 값 위치가 [반복자]가 가리키는 이전.

우리는 (어떤 곳이 두 사이에, 시작, 종료) 모든 가능한 위치에 삽입 할 하나의 구문이 필요합니다

std::vector<int> v;          // {   } 
v.insert(std::begin(v), 2);        // { 2  } 
v.insert(std::find(std::begin(v), std::end(v), 2), 1); // { 1, 2 } 
v.insert(std::end(v), 3);        // { 1, 2, 3 } 

컨테이너의 end 포인터가 마지막 요소 뒤에 점 입니다 , 그 시점을 지나서 삽입 할 수 없기 때문에, 전에 삽입합니다.

또한 컨테이너가 비어있을 때 std::begin(container) == std::end(container)true이므로 insert(std::begin(container), value)이 작동합니다.

+0

감사의 친구 - 나는 cpp 기사를 더 신중하게 읽어야합니다. – metamorphosis