まだ見ぬ明日を

ライブレポートがメインのチラシ裏

【C++】動的な領域の配列をつくる

変数で配列の要素数を決定したい場合の手法のまとめ

ポインタ配列

使い方は、ごく普通の配列と同じ

デバッグ時の配列の中身を参照できないのがデメリット

 

1次元配列

double *array = new double[size_x];

delete array;

 

2次元配列

double **array = new double*[size_x];
for (int i = 0; i < size_x; i++) {
    array[i] = new double[size_y];
}

for (int i = 0; i < size_x; i++) {
    delete array[i];
}
delete array;

 

3次元配列

double ***array = new double**[size_x];
for (int i = 0; i < size_x; i++) {
    array[i] = new double*[size_y];
    for (int j = 0; j < size_y; j++) {
        array[i][j] = new double[size_z];
    }
}

for (int i = 0; i < size_x; i++) {
    for (int j = 0; j < size_y; j++) {
        delete array[i][j];
    }
    delete array[i];
}
delete
array;

 

vector

要「#include <vector>」

vectorもごく普通の配列と同じ使い方

追加や削除など配列の操作が柔軟

 

1次元配列

vector<Type> v;
vector<Type> v();
vector<Type> v(n);
vector<Type> v(n, d);

 

2次元配列

vector<vector<Type>> vv;
vector<vector<Type>> vv();
vector<vector<Type>> vv(n);
vector<vector<Type>> vv(n, vector<Type>(m));
vector<vector<Type>> vv(n, vector<Type>(m, d));

 

3次元配列

vector<vector<vector<Type>>> vvv;
vector<vector<vector<Type>>> vvv();
vector<vector<vector<Type>>> vvv(n, vector<vector<Type>>(m, vector<Type>(l)));
vector<vector<vector<Type>>> vvv(n, vector<vector<Type>>(m, vector<Type>(l, d)));

 

参考文献

blog.northcol.org

qiita.com

 

k0bakatsu.hatenablog.com