C++:vectorを使った多次元配列の動的確保
下記の vector.cpp は、std::vector を使って多次元配列を動的に確保するためのプログラムです。
vector.cpp
#include <iostream>
#include <vector>
using namespace std;
void showVectorSize(vector<double>& v1) {
cout << v1.size() << endl;
}
void showVectorSize(vector<vector<double>>& v2) {
cout << v2.size() << "," << v2.front().size() << endl;
}
void showVectorSize(vector<vector<vector<double>>>& v3) {
cout << v3.size() << "," << v3.front().size() << "," << v3.front().front().size() << endl;
}
int main() {
int n1 = 10;
int n2 = 20;
int n3 = 30;
vector<double> v1;
v1 = vector<double>(n1, 0);
cout << v1[1] << endl;
showVectorSize(v1);
vector<vector<double>> v2;
v2 = vector<vector<double>>(n1, vector<double>(n2, 0));
cout << v2[1][2] << endl;
showVectorSize(v2);
vector<vector<vector<double>>> v3;
v3 = vector<vector<vector<double>>>(n1, vector<vector<double>>(n2, vector<double>(n3, 0)));
cout << v3[1][2][3] << endl;
showVectorSize(v3);
}
注)コンパイルする時は、オプション -std=c++11 を付けて下さい。付けない場合は、入れ子になったテンプレート引数において、
vector<vector<double> >
のように、> と > の間に空白を入れる必要があります。
g++ -std=c++11 -O2 vector.cpp -o vector.exe
参考サイト