C++多次元配列完全ガイド:宣言、初期化、ループ処理
C++ 多次元配列
このガイドでは、C++での2次元・3次元配列の宣言、初期化、イテレーションを実践的なコードサンプルとベストプラクティスとともに解説します。
C++において、多次元配列は単純に配列の配列です。例えば:
int x[3][4];
ここでは x は12要素を保持できる2次元配列です。3行4列のテーブルとしてイメージできます。

3次元配列も同じロジックで拡張されます:
float x[2][4][3];
総要素数は次元を掛け合わせて計算:2 × 4 × 3 = 24。
多次元配列の初期化
1次元配列と同様、多次元配列も複数の方法で初期化できますが、可読性が重要です。以下のセクションで推奨プラクティスを示します。
1. 2次元配列の初期化
int test[2][3] = {2, 4, 5, 9, 0, 19};
文法的には正しいですが、読みにくいです。ネストした初期化子を推奨します:
int test[2][3] = {{2, 4, 5}, {9, 0, 19}};
これで2行3列が明示的になります。

2. 3次元配列の初期化
int test[2][3][4] = {3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23, 2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9};
これも可読性が低いです。各次元をグループ化する明確なアプローチ:
int test[2][3][4] = {
{{3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2}},
{{13, 4, 56, 3}, {5, 9, 3, 5}, {5, 1, 4, 9}}
};
最初の次元が2つの3行ブロックを含み、各行が4列であることが分かります。
実例 1: 2次元配列
#include <iostream>
using namespace std;
int main() {
int test[3][2] = {{2, -5}, {4, 0}, {9, 1}};
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 2; ++j) {
cout << "test[" << i << "][" << j << "] = " << test[i][j] << endl;
}
}
return 0;
}
出力
test[0][0] = 2 test[0][1] = -5 test[1][0] = 4 test[1][1] = 0 test[2][0] = 9 test[2][1] = 1
このスニペットは、ネストした for ループでまず行、次に列をイテレーションし、各要素を出力しています。
実例 2: 2次元配列への入力受け取り
#include <iostream>
using namespace std;
int main() {
int numbers[2][3];
cout << "Enter 6 numbers: " << endl;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
cin >> numbers[i][j];
}
}
cout << "The numbers are: " << endl;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
cout << "numbers[" << i << "][" << j << "]: " << numbers[i][j] << endl;
}
}
return 0;
}
出力
Enter 6 numbers: 1 2 3 4 5 6 The numbers are: numbers[0][0]: 1 numbers[0][1]: 2 numbers[0][2]: 3 numbers[1][0]: 4 numbers[1][1]: 5 numbers[1][2]: 6
ここでは2重ネストループでユーザー入力を収集し、格納した値を表示しています。
実例 3: 3次元配列
#include <iostream>
using namespace std;
int main() {
int test[2][3][2] = {
{{1, 2}, {3, 4}, {5, 6}},
{{7, 8}, {9, 10}, {11, 12}}
};
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 2; ++k) {
cout << "test[" << i << "][" << j << "][" << k << "] = " << test[i][j][k] << endl;
}
}
}
return 0;
}
出力
test[0][0][0] = 1 test[0][0][1] = 2 test[0][1][0] = 3 test[0][1][1] = 4 test[0][2][0] = 5 test[0][2][1] = 6 test[1][0][0] = 7 test[1][0][1] = 8 test[1][1][0] = 9 test[1][1][1] = 10 test[1][2][0] = 11 test[1][2][1] = 12
3次元配列のループには3重ネストループが必要——各次元に対応します。このパターンは高次元にも自然に拡張できますが、複雑性は急速に増大します。
C言語
- C# 配列をマスターする:宣言、初期化、操作
- C# 多次元配列:2次元配列をコード例で徹底解説
- C# ジャグ配列をマスターする:宣言、初期化、アクセス
- C++型変換完全ガイド:暗黙・明示変換とキャスト技法
- C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
- C++コメント完全ガイド:読みやすく保守しやすいコードのためのベストプラクティス
- C++配列を関数に渡す完全ガイド:1次元・多次元配列の実例付き
- C++配列を徹底解説:宣言、初期化、ポインタ活用テクニック
- C++動的配列の確保をマスター:コード例付き実践ガイド
- MATLAB:多次元配列と特殊配列をマスターする
- Java配列コピー技法:包括的ガイド