본문 바로가기

프로그래밍/Modern C++

[C++] 2차원 Vector의 초기화

 

 

2차원 Vector을 초기화하는 방법

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
#include<vector>
 
int main() {
    //첫 번째 5는 vector를 원소로 가지고 있는 컨테이너의 초기화
    //두 번째 5는 int를 원소로 가지고 있는 컨테이너의 초기화
    //세 번째 1은 int를 원소로 가지고 있는 컨테이너의 값을 1로 초기화
    std::vector<std::vector<int>> v(5std::vector<int>(51));
 
    for (const auto& i : v) {
        for (const auto j : i) {
            std::cout << j << " ";
        }
        std::cout << "\n";
    }
}
 

vector 컨테이너를 가지는 vector를 생성과 동시에 초기화하는 방법은 위와 같다.

 

assign() 메서드를 사용해서 초기화하는 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
#include<vector>
 
std::vector<std::vector<int>> g_v;
 
int main() {
    //첫번 째 5는 vector를 원소로 가지고 있는 컨테이너의 초기화
    //두번 째 5는 int를 원소로 가지고 있는 컨테이너의 초기화
    //세번 째 1은 int를 원소로 가지고 있는 컨테이너의 값을 1로 초기화
    g_v.assign(5std::vector<int>(51));
 
    for (const auto& i : g_v) {
        for (const auto j : i) {
            std::cout << j << " ";
        }
        std::cout << "\n";
    }
}
 

생성과 동시에 초기화가 아닌 나중에 들어오는 입력값에 따라 초기화를 진행해야 할 경우가 생길 수 있다.

그런 경우에는 assign() 메서드를 사용하면 되며 위 방법과 큰 차이는 없다.

후기

알고리즘 문제를 풀 때 이와 같은 방법을 사용해야 할 때가 있는대 매번 까먹는 거 같아서 정리 겸 글을 썼다.