変数で配列の要素数を決定したい場合の手法のまとめ
ポインタ配列
使い方は、ごく普通の配列と同じ
デバッグ時の配列の中身を参照できないのがデメリット
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)));
参考文献