C++에서 벡터를 자른다는 것은

 

vector의 일부 구간만 가져와 새로운 벡터를 만드는 것을 의미한다.

 

주로 코딩테스트에서 배열의 일부만 처리하거나, 특정 구간을 분리할 때 자주 사용된다.


1. 기본 개념

벡터는 인덱스를 이용해 원하는 위치에 접근할 수 있다.

vector<int> v = {1, 2, 3, 4, 5};
값:     1  2  3  4  5
인덱스: 0  1  2  3  4

 

 

 

2. 사용 방법

벡터 일부를 자를 때는 반복자(iterator) 를 사용한다.

vector<int> newV(v.begin() + 시작인덱스, v.begin() + 끝인덱스);

여기서 중요한 점은 범위가 다음과 같다는 것이다.
[시작인덱스, 끝인덱스)

 

즉, 시작 인덱스는 포함, 인덱스는 포함하지 않음

 

 

3. 기본 예제

#include <iostream>
#include <vector>

using namespace std;

int main() {

    vector<int> v = {1, 2, 3, 4, 5};

    vector<int> cut(v.begin() + 1, v.begin() + 4);

    for(int i : cut)
        cout << i <<; //결과값: 234

    return 0;
}

- v.begin() + 1은 인덱스 1을 의미하고,

- v.begin() + 4는 인덱스 4 전까지를 의미한다.

- 따라서 실제로 잘리는 구간은 인덱스 1 ~ 3이다.
- 단, 원본 백터 v는 그대로다. => 새로운 cut 변수 설정해서 잘라준 것

 

 

4. 최종 요약

C++에서 벡터 자르기는 반복자를 이용해 원하는 구간만 새로운 벡터로 만드는 방식이다. 기본 형태는 다음과 같다.

vector<int> newV(v.begin() + 시작인덱스, v.begin() + 끝인덱스);

- 범위는 시작은 포함, 끝은 미포함이다. (참고) [C++] reverse() 함수 정리 <- reverse 함수도 시작범위 포함, 끝 미포함

vector<int> cut(v.begin() + 1, v.begin() + 4);

- 위 코드는 인덱스 1 ~ 3까지 가져오므로 결과는 다음과 같다.

2 3 4

 

 

+ Recent posts