C++ | vector 정리
포스트
취소

C++ | vector 정리

Vector

vector는 동적 배열을 구현하는 컨테이너다.

내부 원소의 증가 및 감소에 따라 알아서 메모리를 할당 및 해제 한다.

예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec; // 선언
    
    // 원소 증가
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    vec.push_back(4);
    vec.push_back(5);

    int value;
    cout << vec.size() << endl; // vector 크기 출력

    cout << vec[0] << endl; // 0번째 원소 출력
    cout << vec.pop_back() << endl; // 마지막 원소 제거 후 출력
    
    // Range-based for loop
    for(int ele : vec) {

    }
}

필요 헤더

1
#include <vector>

선언

std::vector<자료형>

1
2
3
4
5
6
7
8
9
10
11
12
13
// 비어있는 vector 생성
vector<int> vec;

// 크기 10의 기본값으로 초기화된 상태로 생성
// int, char등 기본 자료형의 경우 0, 클래스의 경우 기본 생성자로 생성된 객체로 채워짐
vector<int> vec(10); 

// 크기 10의 1로 초기화된 상태로 생성
vector<int> vec(10, 1); 

// src의 원소를 복사해 dst를 생성
vector<int> src(10, 5);
vector<int> dst(src);

원소 추가 & 삭제

std::vector::push_back()

std::vector::pop_back()

1
2
3
4
5
// 원소 5 추가
vec.push_back(5);

// 마지막 원소 제거
vec.pop_back();

원소 가져오기

std::vector::at()

std::vector::operator[]

1
2
3
4
5
// 2번째 원소를 가져온다
value = vec.at(2);

// 2번째 원소를 가져온다
value = vec[2];

at()operator[] 의 차이?

at() 의 경우 범위 체크를 하여 예외처리를 해준다.

반면 operator[]의 경우 범위 체크를 하지 않으며, 범위를 벗어난 곳을 접근하는 경우는 정의되지 않은 동작 (undefined behavior)이다.

기타

size

std::vector::size()

1
2
// 저장된 원소의 크기 가져오기
value = vec.size();

resize

std::vector::resize()

1
2
3
// 크기를 3으로 변경
// 늘어난 크기만큼 기본값으로 채워짐
vec.resize(3);

capacity

std::vector::capacity()

1
2
// vector의 capacity 가져오기
value = vec.capacity();

size는 원소의 갯수, capacity는 원소가 저장될 공간의 크기를 의미하며 capacity가 size보다 같거나 더 크다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.