공부 흔적남기기

c++ 동적배열과 이중포인터를 이용한 2차원 배열과 1차원배열을 이용한 2차원 배열! 본문

프로그래밍 언어/c++ study

c++ 동적배열과 이중포인터를 이용한 2차원 배열과 1차원배열을 이용한 2차원 배열!

65살까지 코딩 2021. 2. 18. 20:16
728x90
반응형

//기본값 설정

#include

using namespace std;

int main()
{
const int row = 3;
const int colum = 5;

int arr[row][colum] =
{
    {1, 2, 3, 4, 5}
,    {6 ,7, 8, 9 ,10}
,    {11, 12, 13, 14, 15}
};

//1차원 배열을 2차원 배열처럼 사용하기

int *line = new int[row * colum];

for (int r = 0; r < row; r++)
{
    for (int c = 0; c < colum; c++)
    {
        line[c + r * colum] = arr[r][c];
    }
}

for (int i = 0; i < row; i++)
{
    for (int j = 0; j < colum; j++)
    {
        cout << line[j + i*colum];
    }
    cout << endl;
}

//for문을 통한 방법

int **matrix = new int *[row];

for (int r = 0; r < row; r++)
{
    matrix[r] = new int[colum];
}

for (int r = 0; r < row; r++)
{
    for (int c = 0; c < colum; c++)
    {
        matrix[r][c] = arr[r][c];
    }
}

for (int i = 0; i < row; i++)
{
    for (int j = 0; j < colum; j++)
    {
        cout << matrix[i][j];
    }
    cout << endl;
}
for (int r = 0; r < row; r++)
{
    delete[] matrix[r];
}
delete[] matrix;

//원초적인 방법

int *row1 = new int[colum] {1, 2, 3, 4, 5};
int *row2 = new int[colum] {6, 7, 8, 9, 10};
int *row3 = new int[colum] {11, 12, 13, 14, 15};
int **rows = new int *[row] {row1, row2, row3};

for (int i = 0; i < row; i++)
{
    for (int j = 0; j < colum; j++)
    {
        cout << rows[i][j];
    }
    cout << endl; 

delete[] row1;
delete[] row2;
delete[] row3;
delete[] rows;
}

return 0;
}

 

728x90
반응형

'프로그래밍 언어 > c++ study' 카테고리의 다른 글

Clion의 double 처리 실수  (0) 2023.08.01
동적배열을 함수로 call하는 법  (0) 2021.02.19