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

C++で多次元配列の次元を取得して表示する方法

C++では、テンプレート関数を活用することで、多次元配列の各次元のサイズを動的に取得して出力できます。ここでは、指定された配列の次元を表示するC++プログラムを紹介します。

アルゴリズム

template()関数を使用して、配列の現在のサイズを取得します。その後、配列の最後の次元に到達するまで、その関数を再帰的に呼び出していきます。

サンプルコード

#include <iostream>
using namespace std;
template <typename t, size_t n>
void printDimensionsOfArray(const t (&a)[n]) {
    cout << n;
}
template <typename t, size_t n, size_t m>
void printDimensionsOfArray(const t (&a)[n][m]) {
    cout << "Dimensions of the Array is: "<<n << " x ";
    printDimensionsOfArray(a[0]);
}
int main() {
   int a[6][7];
   printDimensionsOfArray(a);
   return 0;
}

出力

Dimensions of the Array is: 6 x 7

コードの解説

このプログラムのポイントは以下の通りです。

  • 1次元配列用にオーバーロードされた関数は、テンプレートパラメータsize_t nを通じて配列の要素数を受け取り、その値を出力します。
  • 2次元配列用の関数は、行数nと列数mを受け取り、まず行数と区切り文字「x」を出力した後、a[0](1次元配列)を引数として再帰的に自分自身を呼び出します。
  • この仕組みを応用すれば、3次元以上の配列にも対応した拡張が可能です。

重要なのは、配列を必ず参照(const T (&a)[N])として受け取る点です。ポインタとして渡してしまうと、配列のサイズ情報が失われてしまい、次元を正しく取得できなくなります。テンプレートと参照渡しを組み合わせることで、C++でも安全に配列の次元情報を扱うことができます。

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

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

  2. C++のnew演算子を使って2次元配列を動的に宣言・生成する方法

    動的な2次元配列とは、基本的に「配列へのポインタ」を要素とする配列(ポインタの配列)のことです。つまり、各行が独立した1次元配列としてヒープ上に確保され、それらの先頭アドレスを格納するポインタ配列によって全体が管理されます。下図は、3×4の2次元配列のイメージです。アルゴリズムC++のnew演算子で2次元配列を動的に確保する手順は以下の通りです。Begin 配列の寸法(行数・列数)を宣言する。 new を使って 2次元配列 a[][] を動的に確保する。 配列に要素を代入する。 配列の内容を出力する。 delete でメモリを解放する。 Endサンプルコ