C++ STL의 vector insert() 함수는 지정한 위치 앞에 새로운 요소를 삽입하여 컨테이너의 크기를 늘리는 데 사용됩니다. 이 함수는 C++ 표준 라이브러리(STL)에 미리 정의되어 있어, 별도의 구현 없이 바로 호출할 수 있습니다.
insert() 함수는 용도에 따라 세 가지 형태의 문법으로 사용할 수 있습니다.
insert() 함수의 세 가지 문법
1. 위치와 값만 지정하는 방법
특정 위치(pos) 앞에 하나의 값(value)을 삽입합니다.
vector_name.insert(pos, value);
2. 위치, 개수(size), 값을 함께 지정하는 방법
특정 위치 앞에 동일한 값(value)을 size개만큼 반복해서 삽입합니다.
vector_name.insert(pos, size, value);
3. 다른 벡터의 요소를 통째로 복사하는 방법
비어 있는 벡터에, 채워진(filled) 벡터의 반복자(iterator)가 가리키는 범위의 모든 요소를 지정한 위치부터 삽입합니다.
empty_vector_name.insert(pos, iterator1, iterator2);
알고리즘
Begin
값을 가진 벡터 v를 선언한다.
비어 있는 벡터 v1을 선언한다.
반복자(iter)를 선언한다.
v 벡터의 맨 앞에 값을 하나 삽입한다.
개수를 지정하여 v 벡터의 맨 앞에 또 다른 값을 삽입한다.
v 벡터의 모든 값을 출력한다.
v 벡터의 반복자를 이용해 v의 모든 값을 v1 벡터에 삽입한다.
v1 벡터의 모든 값을 출력한다.
End.예제 코드
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = { 50,60,70,80,90},v1; // 값이 있는 v와 빈 벡터 v1 선언
vector<int>::iterator iter; // 반복자 선언
iter = v.insert(v.begin(), 40); // v 벡터의 맨 앞에 40 삽입
iter = v.insert(v.begin(), 1, 30); // v 벡터의 맨 앞에 30을 1개 삽입
cout << "The vector1 elements are: \n";
for (iter = v.begin(); iter != v.end(); ++iter)
cout << *iter << " "<<endl; // v 벡터의 값 출력
v1.insert(v1.begin(), v.begin(), v.end()); // v의 모든 값을 v1에 삽입
cout << "The vector2 elements are: \n";
for (iter = v1.begin(); iter != v1.end(); ++iter)
cout << *iter << " "<<endl; // v1 벡터의 값 출력
return 0;
}실행 결과
The vector1 elements are: 30 40 50 60 70 80 90 The vector2 elements are: 30 40 50 60 70 80 90
핵심 정리
위 예제에서 확인할 수 있듯이, insert() 함수는 항상 지정한 위치 앞에 새 요소를 추가합니다. 첫 번째 삽입으로 40이 맨 앞에 추가되었고, 두 번째 삽입으로 30이 그보다 앞에 추가되어 최종적으로 {30, 40, 50, 60, 70, 80, 90} 순서의 벡터가 완성되었습니다. 또한 반복자 범위(begin ~ end)를 인자로 넘기면 다른 벡터의 전체 내용을 한 번에 복사할 수 있어, 벡터 간 데이터 병합 시에도 유용하게 활용됩니다.