【C++/CLI】配列の配列(ジャグ配列)

シェアする

  • このエントリーをはてなブックマークに追加
最近の記事
  • 9/7 【Neural Network Console】学習データの出力方法
  • 9/3 Deep Learning向け学習画像撮り込みソフト公開
  • 9/1 【Neural Network Console】新規画像のDataset作成方法
  • 8/28 【Neural Network Console】GUI表示スケールの変更
  • 8/22 【Neural Network Console】CPU/GPU処理の設定切替
  • 8/21 【Neural Network Console】Learning Rate(学習率)の設定
  • 8/20 ソニーの無償AIソフト Neural Network Consoleの入手ダウンロード、インストール
  • 8/20 Deep Learning
  • 8/20
  • 8/19 古いバージョンのVisual Studio Community/Expressの入手ダウンロード
  • 8/19 CUDAの入手、ダウンロード、インストール方法
  • 8/17 【C#.NET】マイクロソフト仕様のアフィン変換
  • 8/5 【C#】ファイルを開くダイアログボックスの表示
  • 8/2 キャノンプリンターのCDトレイはどこ?!
  • 7/6 【参考書籍】画像処理・機械学習プログラミング OpenCV 3対応
  • 6/20 【Python,matplotlib】動くグラフをAnimationGifに保存する方法
  • 6/17 シグモイド関数の微分
  • 6/15 シグモイド関数
  • 6/13 合成関数の微分
  • 6/12 WordPressで数式エディタ風に数式を入力したい
  • 6/11 PythonをVisual Studioでインストールする方法
  • 6/9 【Python】OpenCVをAnacondaでインストール(Windows編)
  • 6/6 【Python】Anacondaで複数バージョンの環境切り替え
  • 6/6 画像センシング展2017に出展します。
  • 6/1 【Office365】Web版Outlookのフォントサイズ変更
  • 6/1 【Anaconda】モジュールのアップデートでエラー発生
  • 6/1 【Anaconda】コマンドリストの表示
  • 5/29 Windows10パソコン購入
  • 5/24 Anacondaのアンインストール
  • 5/24 【Jupyter Notebook】新規プログラムの作成
  • 5/23 【Python】開発環境の構築
  • 5/23 Pythonはじめました
  • 4/6 【Office365】Web版Outlookのスレッド表示を解除する方法
  • 4/5 【Excel】フーリエ解析(FFT)
  • 3/20 Canny edge detection
  • 3/20 【Excel2016】分析ツールの表示
  • 3/5 【Visual Studio】黒い背景色を白に変更する方法
  • 2/8 【Windows10】拡張モニタに表示されたウィンドウを元に戻す
  • 2/7 複素数の計算
  • 1/18 【Excel】棒グラフの横軸の目盛を0始まりにする
  • 1/16 【Excel】フーリエ変換
  • 1/6 【OpenCV】疑似カラー(カラーマップ)
  • 11/8 【Visual Studio】検索結果のウィンドウ表示
  • 11/3 ニコン 一眼レフカメラ D5500レビュー
  • 10/26 カラーカメラはモノクロカメラを兼ねない
  • 9/6 (Free Soft)Animation GIF Builder
  • 8/30 【C#】タブの無いTabControlっぽいものを作る
  • 8/29 【OpenCvSharp】サンプルプログラムの公開
  • 8/28 【PowerPoint】部分的にカラーにする(セレクトカラー処理)
  • 8/27 【C#】引数の値渡し、参照渡し(ref, out)

  • 配列の配列をジャグ配列と言います。

    サンプルコードは以下の通り。

    //////////////////////////////////////////////
    // 配列の配列(ジャグ配列) その1
    //////////////////////////////////////////////
    array<array<int>^>^ jag1 = gcnew array<array<int>^>(2);
    
    int index1 = 0;
    
    for (int j = 0; j < jag1->Length; j++)
    {
    	jag1[j] = gcnew array<int>(3);
    	for (int i = 0; i < jag1[j]->Length; i++)
    	{
    		jag1[j][i] = index1++;
    	}
    }
    // jag1[0][0] = 0  jag1[0][1] = 1  jag1[0][2] = 2
    // jag1[1][0] = 3  jag1[1][1] = 4  jag1[1][2] = 5
    
    //////////////////////////////////////////////
    // 配列の配列(ジャグ配列) その2
    //////////////////////////////////////////////
    array<array<int>^>^ jag2 = gcnew array<array<int>^>(3);
    
    int index2 = 0;
    
    for (int j = 0; j < jag2->Length; j++)
    {
    	jag2[j] = gcnew array<int>(j + 1);
    	for (int i = 0; i < jag2[j]->Length; i++)
    	{
    		jag2[j][i] = index2++;
    	}
    }
    
    // jag2[0][0] = 0
    // jag2[1][0] = 1  jag2[1][1] = 2
    // jag2[2][0] = 3  jag2[2][1] = 4  jag2[2][2] = 5
    

    上記の例は、配列の配列までの例ですが、配列の配列の配列も可能です。

    array<array<array<int>^>^>^ jag;

    このジャグ配列は、個人的にはあまり用いていませんが、上記の ジャグ配列 その2 の例でも示しているように、必ずしも1行あたりの配列の要素数は同じである必要は無いので、例えば、CSVファイルなどのように、1行あたりの要素数が不定になる可能性のある配列などに用いると便利です。