Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL vector insert() 함수 완벽 정리 – 사용법과 예제

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)를 인자로 넘기면 다른 벡터의 전체 내용을 한 번에 복사할 수 있어, 벡터 간 데이터 병합 시에도 유용하게 활용됩니다.