반응형
C++에서 1차원 배열을 동적으로 할당해줄 때는 일반적으로 다음과 같이 선언을 한다.
int n;
cin >> n;
int* cost = new int[n];
2차원 배열 선언은 단순히 한줄코드로 선언할 수 있는 것이 아닌 for 반복문으로 설정해줘야 한다.
2차원 배열은 위와 같은 구조를 지닌다. 위 그림은 row_n이 4, col_n이 5에 해당하는 배열이다.
먼저, memset 함수 사용을 위해 헤더파일에 string.h 를 포함해준다.
단순히 2차원 배열선언이 목적이라면 아래와 같은 코드를 응용하면 된다.
int row_n, col_n;
cin >> row_n >> col_n;
int** cost = new int*[col_n];
for(int i = 0; i < col_n; ++i)
cost[i] = new int[row_n];
하나의 메모리 블럭에 (포인터들의 크기만큼 메모리 절약) 2차원 배열을 할당하는 방법은 몇가지 더 추가해주면 된다.
#include<string.h>
int row_n, col_n;
cin >> row_n >> col_n;
// 메모리 할당
int** cost = new int*[col_n];
for(int i = 0; i < col_n; ++i){
cost[i] = new int[row_n];
memset(cost[i], 0, sizeof(int)*size(row_n)); // memory 공간 0으로 초기화
}
// 메모리 해제
for(int i = 0; i < col_n;++i){
delete[] cost[i];
}
delete[] cost;
자세한 사항은 이 글을 확인하면 도움이 될 것이다.
stackoverflow : How do I declare a 2d array in C++ using new?
How do I declare a 2d array in C++ using new?
How do i declare a 2d array using new? Like, for a "normal" array I would: int* ary = new int[Size] but int** ary = new int[sizeY][sizeX] a) doesn't work/compile and b) doesn't accomplish what...
stackoverflow.com
반응형
'개발(Dev) 이야기 > C++ , Python' 카테고리의 다른 글
[C++] 동적으로 2차원 배열 할당하기 - vector편 (0) | 2020.03.25 |
---|---|
[C++] Vector에서 Unique, erase를 활용한 중복순열 (0) | 2020.03.18 |
[C++] pair, vector (0) | 2020.03.08 |
[C++] 순열 정렬방법 (next_permutation, prev_permutation) (0) | 2020.03.08 |
[C++] 기본입출력, 줄바꿈 (0) | 2020.03.08 |