Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C/C++の多次元配列とは?基本概念から動的メモリ確保まで徹底解説


C/C++における多次元配列とは、簡単に言えば「配列の配列」として定義されるデータ構造です。多次元配列では、データが表形式(行優先順/row-major order)でメモリ上に格納されます。

以下の図は、3×3×3の次元を持つ多次元配列のメモリ割り当て戦略を示したものです。

C/C++の多次元配列とは?基本概念から動的メモリ確保まで徹底解説

アルゴリズム

2次元配列を動的に確保し、操作するための基本的な手順は以下の通りです。

Begin
    配列の次元を宣言する
    new演算子を使用して2次元配列 a[][] を動的に確保する
    配列に要素を格納する
    配列の内容を出力する
    deleteによってメモリを解放する
End

サンプルコード

以下は、new演算子を使って2次元配列を動的に確保し、値を代入・出力した後、メモリを解放するC++のプログラム例です。

#include <iostream>
using namespace std;
int main() {
    int B = 4;  // 行数
    int A = 5;  // 列数
    // ポインタ配列を動的に確保
    int** a = new int*[B];
    for(int i = 0; i < B; ++i)
        a[i] = new int[A];  // 各行に配列を確保
    // 配列に要素を格納
    for(int i = 0; i < B; ++i)
        for(int j = 0; j < A; ++j)
            a[i][j] = i;
    // 配列の内容を出力
    for(int i = 0; i < B; ++i)
        for(int j = 0; j < A; ++j)
            cout << a[i][j] << "\n";
    // メモリを解放
    for(int i = 0; i < A; ++i)
        delete [] a[i];
    delete [] a;
    return 0;
}

実行結果

このプログラムを実行すると、各行に同じ値(行インデックス)が格納された20個の数値が出力されます。

0
0
0
0
0
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3

ポイントまとめ

  • 多次元配列は「配列の配列」として表現され、データは行優先順でメモリに配置されます。
  • new演算子を使うことで、実行時にサイズを決定できる動的な2次元配列を作成できます。
  • 動的に確保したメモリは、使用後にdelete[]で必ず解放しましょう。メモリリークを防ぐために、まず各行の配列を解放し、その後ポインタ配列自体を解放します。

  1. 【初心者向け】C/C++における多次元配列の初期化方法をわかりやすく解説

    多次元配列とは、次元数が2以上ある配列のことです。本記事では、3×3×3の多次元配列におけるメモリ割り当ての仕組みと、実際に配列を初期化して内容を表示するC++プログラムを紹介します。下図は、次元が3×3×3の多次元配列に対するメモリ割り当ての戦略を示したものです。アルゴリズム多次元配列を初期化するプログラムは、以下の手順で構成されます。Begin 多次元配列の要素を初期化する 配列のサイズを出力する 配列の内容を表示する Endサンプルコード以下は、2行2列の二次元配列を初期化し、そのサイズと内容を出力するC++プログラムです。#include<iostream

  2. C言語の多次元配列とは?行優先・列優先の仕組みとサンプルコード

    多次元配列とは配列とは、同種のデータ(ホモジニアスなデータ)をまとめて管理するための基本的なデータ構造です。配列の要素は、メモリ上の連続した領域に順番に配置されます。しかし実際のプログラミングでは、1次元の配列だけでは不十分なケースが少なくありません。例えば、表形式のデータや行列を扱う場合には、2次元配列やさらに多くの次元を持つ多次元配列を作成する必要があります。行優先方式と列優先方式多次元配列をメモリ上に表現する方法には、大きく分けて2つのアプローチがあります。ひとつは行優先(Row-Major)方式、もうひとつは列優先(Column-Major)方式です。r行 c列の2次元配列を考えてみま