[c++] 2차원 vector
나만 몰랐었던 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행
-
index를 통해 접근이 가능
v1[0][0] = 1; v1[5][4] = 20;
-
push_back 을 하게 되면 설정해준 사이즈 뒤에 생긴다. (사용x, 2번 예시)
2. 행은 모르고 열만 사이즈를 아는 경우
vector<vector<int> > v1(6);
-
6열
-
push_back 을 통해 입력
v1[0].push_back(99);
3. 행과 열 모두 사이즈를 모르는 경우
vector<vector<int> > v1;
v1.push_back(vector<int>());
v1[0].push_back(10);
- push_back을 통해 입력