[c++] 2차원 vector

최대 1 분 소요

나만 몰랐었던 vector 상식2

2024 대경권 대학생 프로그래밍 경진대회에서 생긴 이슈를 리뷰 해보았다.

Issue

vector<vector<int> > answer;

for(int i=0;i<n;i++){
	answer[i].push_back(99);
}
  • zsh: segmentation fault

문제 = answer[i]

이전 리뷰에서 배웠듯이 사이즈를 선언해줘야 한다!!

하지만 사이즈를 모른다면?

출처 : https://powerofsummary.tistory.com/21

1. 행과 열 모두 사이즈를 아는 경우

vector<vector<int> > v1(6, vector<int>(5)); // default 0
//OR
vector<vector<int> > v1(6, vector<int>(5, 0)); // 0으로 채운다
  • 6열 5행

    Untitled

  • index를 통해 접근이 가능

      v1[0][0] = 1;
      v1[5][4] = 20;
    
  • push_back 을 하게 되면 설정해준 사이즈 뒤에 생긴다. (사용x, 2번 예시)

2. 행은 모르고 열만 사이즈를 아는 경우

vector<vector<int> > v1(6);
  • 6열

    Untitled 1

  • push_back 을 통해 입력

      v1[0].push_back(99);
    

3. 행과 열 모두 사이즈를 모르는 경우

vector<vector<int> > v1;

v1.push_back(vector<int>());
v1[0].push_back(10);
  • push_back을 통해 입력

Untitled 2

카테고리:

업데이트: