본문 바로가기
Programming

C++에서 이차원 배열 초기화 및 사용법

by 느리게 걷는 즐거움 2024. 11. 19.
반응형

이차원 배열은 행(row)과 열(column)로 구성된 데이터를 저장할 수 있는 유용한 데이터 구조입니다. C++에서는 이차원 배열을 다양한 방법으로 선언하고 초기화할 수 있습니다. 이 글에서는 이차원 배열을 만드는 방법초기화 방법을 코드 예제와 함께 쉽게 설명하겠습니다.

 

1. 이차원 배열의 선언 방법

이차원 배열은 다음과 같이 선언할 수 있습니다:

type arrayName[행][열];
 
  • type: 배열에 저장할 데이터 타입 (예: int, float, char 등)
  • : 배열의 행 개수
  • : 배열의 열 개수

예제:

int myArray[3][4]; // 3행 4열의 정수형 이차원 배열

 

2. 이차원 배열의 초기화 방법

C++에서 이차원 배열을 초기화하는 방법은 여러 가지가 있습니다.

(1) 중괄호를 이용한 초기화

배열을 선언하면서 동시에 값을 초기화할 수 있습니다.

예제:

int myArray[2][3] = { {1, 2, 3}, {4, 5, 6} };

위 코드에서:

  • 첫 번째 행은 {1, 2, 3}
  • 두 번째 행은 {4, 5, 6}으로 초기화됩니다.

C++11 이상에서는 다음과 같이 줄여 쓸 수도 있습니다:

int myArray[2][3] = {1, 2, 3, 4, 5, 6};
 

(2) 모든 값을 0으로 초기화

배열의 모든 값을 0으로 초기화하려면 중괄호 {}를 빈 상태로 두면 됩니다.

예제:

int myArray[3][4] = {};
 

 

3. 이차원 배열의 동적 할당

이차원 배열을 사용할 때 배열 크기를 런타임에 결정해야 하는 경우, 동적 메모리 할당을 사용할 수 있습니다.

 

(1) 동적 메모리 할당으로 이차원 배열 생성

C++에서 new 연산자를 사용하여 동적으로 배열을 생성할 수 있습니다.

예제:

int rows = 3, cols = 4;

// 이차원 배열 동적 할당
int** myArray = new int*[rows];
for (int i = 0; i < rows; i++) {
    myArray[i] = new int[cols];
}

// 배열에 값 할당
for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        myArray[i][j] = i * cols + j; // 예제 값
    }
}

// 동적 배열 해제
for (int i = 0; i < rows; i++) {
    delete[] myArray[i];
}
delete[] myArray;

 

(2) C++ STL을 활용한 동적 이차원 배열

std::vector를 사용하면 동적 배열 관리가 더 간편합니다.

예제:

#include <vector>
#include <iostream>

int main() {
    int rows = 3, cols = 4;

    // 2D 벡터 생성
    std::vector<std::vector<int>> myArray(rows, std::vector<int>(cols, 0));

    // 값 할당
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            myArray[i][j] = i * cols + j; // 예제 값
        }
    }

    // 출력
    for (const auto& row : myArray) {
        for (int val : row) {
            std::cout << val << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

 

4. 이차원 배열 값 접근

이차원 배열의 값을 접근하거나 변경하려면 배열의 행과 열 인덱스를 사용합니다.

예제:

#include <iostream>
using namespace std;

int main() {
    int myArray[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };

    // 특정 값 출력
    cout << "myArray[1][2]: " << myArray[1][2] << endl; // 6

    // 값 변경
    myArray[1][2] = 10;

    // 변경된 값 출력
    cout << "myArray[1][2]: " << myArray[1][2] << endl; // 10

    return 0;
}

 

5. 주의할 점

  1. 배열 크기를 초과하는 인덱스에 접근하면 정의되지 않은 동작이 발생하니 주의하세요.
  2. 동적으로 할당한 메모리는 사용 후 반드시 해제해야 메모리 누수를 방지할 수 있습니다.
  3. std::vector를 사용하면 메모리 관리를 더 간단히 할 수 있습니다.

 

결론

C++에서 이차원 배열은 다양한 방식으로 선언, 초기화, 동적 할당할 수 있습니다.

  • 정적 배열은 사용이 간단하지만, 크기가 고정됩니다.
  • 동적 배열이나 std::vector를 활용하면 크기가 유동적인 배열을 만들 수 있습니다.
반응형