반응형
이차원 배열은 행(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. 주의할 점
- 배열 크기를 초과하는 인덱스에 접근하면 정의되지 않은 동작이 발생하니 주의하세요.
- 동적으로 할당한 메모리는 사용 후 반드시 해제해야 메모리 누수를 방지할 수 있습니다.
- std::vector를 사용하면 메모리 관리를 더 간단히 할 수 있습니다.
결론
C++에서 이차원 배열은 다양한 방식으로 선언, 초기화, 동적 할당할 수 있습니다.
- 정적 배열은 사용이 간단하지만, 크기가 고정됩니다.
- 동적 배열이나 std::vector를 활용하면 크기가 유동적인 배열을 만들 수 있습니다.
반응형
'Programming' 카테고리의 다른 글
Git Branch 이해하기 (0) | 2024.12.10 |
---|---|
Git에서 삭제되지 않는 원격 브랜치 삭제 방법 (0) | 2024.11.28 |
C++ Queue 초기화 방법 (0) | 2024.11.16 |
C++로 Queue를 사용하는 방법 (0) | 2024.11.13 |
C++에서 배열을 초기화하는 방법 (0) | 2024.11.12 |