マイコンプラス

    二足歩行ロボットの制御やセンサの使い方、ロボットキット、ロボットの大会などについて紹介します

    スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。
    [ --/--/-- --:-- ] スポンサー広告 | TB(-) | CM(-)

    [C++]1次元配列を3次元配列に整形する

     外部RAMなんかに書き込んでおいたデータを扱いやすくするために3次元配列の形にしたいことがありました.案外てこずったのでメモしておきます.
     3次元として持つための領域を動的に確保しているのでサイズが可変です.


    #include <iostream>
    using namespace std;

    int data[256]; //元となるデータ領域

    int main()
    {
    //データ領域への値の代入
    for(int i = 0; i < 256; ++i) {
    data[i] = i;
    }

    //3次元配列の大きさ
    char size_z = 3;
    char size_y = 4;
    char size_x = 5;

    //とりあえずポインタに元のデータ領域の先頭アドレスを代入
    int* p = data;

    //3次元配列arrayへの整形
    int*** array = new int**[size_z];
    for (int i = 0; i < size_z; ++i) {
    array[i] = new int*[size_y];
    for (int j = 0; j < size_y; ++j) {
    array[i][j] = p + size_x * j;
    }
    p += size_x * size_y;
    }

    //確認のため表示
    for (int i = 0; i < size_z; ++i) {
    for (int j = 0; j < size_y; ++j) {
    for (int k = 0; k < size_x; ++k) {
    cout << array[i][j][k] << endl;
    }
    }
    }

    //メモリの解放
        for (int i = 0; i < size_z; i++) {
    delete[] array[i];
    }
    delete[] array;

    }



    (sizeof int) * (1 + size_z)だけのメモリを消費します.
    [ 2012/11/16 01:15 ] C言語 | TB(0) | CM(0)
    コメントの投稿












    管理者にだけ表示を許可する
    トラックバック
    この記事のトラックバックURL



    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。