728x90
728x90

2차원 배열 동적 할당 방법 (new 연산자)

들어가며

  • C++에서 @new@ 연산자를 이용하여 쉽게 2차원 배열을 동적 할당할 수 있다.

 

방법

동적 할당

int **ary;

// 2차원 배열 동적 할당
ary = new int*[row];
for (int i = 0; i < col; i++) {
    ary[i] = new int[i];
}

 

동적 할당 해제

// 2차원 배열 동적 할당 해제
for (int i = 0; i < col; i++) {
    delete[] ary[i];
}
delete[] ary;

 

예제

#include <iostream>
using namespace std;

int row, col, **ary;

void Input(int **a, int r, int c) {
    for (int i = 0; i < r; i++) {
        for (int j = 0; j < c; j++) {
            cin >> a[i][j];
        }
    }
    cout << endl;
}

void Output(int **a, int r, int c) {
    cout << "[" << r << " × " << c << " Array]" << endl;
    for (int i = 0; i < r; i++) {
        for (int j = 0; j < c; j++) {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
}

int main() {
    cout << "Row : ";
    cin >> row;
    
    cout << "Column : ";
    cin >> col;
 
    // 2차원 배열 동적 할당
    ary = new int*[row];
    for (int i = 0; i < col; i++) {
        ary[i] = new int[i];
    }
    
    // 2차원 배열에 입력 받기
    Input(ary, row, col);
    
    // 2차원 배열 출력 하기
    Output(ary, row, col);
    
    // 2차원 배열 동적 할당 해제
    for (int i = 0; i < col; i++) {
        delete[] ary[i];
    }
    delete[] ary;
 
    return 0;
}
Row : 5
Column : 5
1 2 3 4 5
6 7 8 9 8
9 8 7 6 5
4 3 2 1 0
1 2 3 4 5

[5 × 5 Array]
1 2 3 4 5 
6 7 8 9 8 
9 8 7 6 5 
4 3 2 1 0 
1 2 3 4 5

 

(참고) 1차원 배열 동적 할당 방법

  • 1차원 배열은 다음과 같이 간단하게 동적 할당을 할 수 있다.
int *ary;

// 1차원 배열 동적 할당
ary = new int[size];
728x90
728x90