반응형
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()) 범위의 요소를 추가한다.
'C,C++ > C++' 카테고리의 다른 글
[C++] 추상 클래스와 순수 가상함수를 알아보자(feat. 인터페이스, 다중상속) (0) | 2020.02.20 |
---|---|
[C++] iterator를 이용한 삽입 정렬(Insertion sorting) 구현 (0) | 2020.02.13 |
[C++] 복사 생성자 및 할당(=) 연산자가 호출되는 시점 | 초기화와 할당의 차이 | RVO(Return Value Optimization) (0) | 2020.02.07 |
[C++] 캐스팅 연산자에 대해 알아보자 | static_cast, reinterpret_cast (0) | 2020.01.23 |
[C++] 클래스의 멤버가 저장되는 영역 및 메모리 차지 (2) | 2020.01.10 |
댓글