본문 바로가기
C,C++/C++

[C++] insert 함수를 이용하여 vector 합치기 | 벡터(vector) 합치는 법

by woohyeon 2020. 2. 12.
반응형

vector의 insert 멤버 함수를 이용한다.

insert는 몇 가지로 오버로딩되어 있는데 그 중 하나를 이용하여 벡터를 합칠 수 있다. 여기서 벡터 A와 벡터 B를 합친다는 의미는 벡터 A의 끝에
벡터 B의 원소를 차례대로 연결한다는 뜻이다.

template <class InputIterator>
iterator insert (const_iterator position, InputIterator first, InputIterator last);

위 함수는 position이 가리키는 위치부터 [first, last) 위치의 요소를 추가한다.

따라서 v1 벡터와 v2벡터를 연결하고 싶다면 첫 인자로 v1.end(), 두 번째 인자로 v2.begin(), 세 번째 인자로 v2.end()를 준다. 멤버 함수 end()는 마지막 요소가 아닌 마지막 요소의 다음을 가리키는 반복자를 반환한다는 것을 잊으면 안된다.

insert의 리턴값은 추가를 시작 한 곳의 위치를 나타내는 반복자이다. 즉 추가된 첫 요소의 위치이다. 아래의 예에서 it는 4를 가리키는 반복자를 반환한다.


예제)

vector<int> v1 { 1,2,3 };
vector<int> v2 { 4,5,6 };
vector<int> v3 { 7,8,9 };

// 1 2 3 4 5 6
vector<int>::iterator it = v1.insert(v1.end(), v2.begin(), v2.end());

for (const auto data : v1)
{
	cout << data << " ";
}
cout << endl << endl;


v3.insert(v3.begin(), it, v1.end()); // 4 5 6 7 8 9

for (const auto data : v3)
{
	cout << data << " ";
}

 

결과)

 

두 번째 insert는 v3의 첫 번째 위치에 [it, v1.end()) 범위의 요소를 추가한다.




댓글