이스트버드
꾸준함은 모든 것을 이긴다
이스트버드
전체 방문자
오늘
어제
  • 분류 전체보기 (76)
    • 네트워크 개념 (9)
    • 개발(Dev) 이야기 (53)
      • Algorithm (13)
      • Linux, Unix (13)
      • Xamarin (3)
      • C++ , Python (9)
      • Raspberry pi (4)
      • A.I. (7)
      • etc (4)
    • 운영(Ops) 이야기 (12)
      • 접근제어 솔루션 (Hiware) (1)
      • 데이터베이스 (9)
      • TroubleShooting (2)
    • MSA (1)
      • Kubernetes, Docker (1)
    • 일상 (1)

인기 글

반응형

티스토리

hELLO · Designed By 정상우.
이스트버드

꾸준함은 모든 것을 이긴다

[C++] 동적으로 2차원 배열 할당 및 해제하기
개발(Dev) 이야기/C++ , Python

[C++] 동적으로 2차원 배열 할당 및 해제하기

2020. 3. 8. 17:18
반응형

C++에서 1차원 배열을 동적으로 할당해줄 때는 일반적으로 다음과 같이 선언을 한다.

int n;
cin >> n;
int* cost = new int[n];

 

2차원 배열 선언은 단순히 한줄코드로 선언할 수 있는 것이 아닌 for 반복문으로 설정해줘야 한다.

 

2차원 배열 할당

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
    '개발(Dev) 이야기/C++ , Python' 카테고리의 다른 글
    • [C++] Vector에서 Unique, erase를 활용한 중복순열
    • [C++] pair, vector
    • [C++] 순열 정렬방법 (next_permutation, prev_permutation)
    • [C++] 기본입출력, 줄바꿈
    이스트버드
    이스트버드
    이것저것 일단 해보고 보는 컴퓨터 전공 연구원의 파란만장한 스토리

    티스토리툴바