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


参考サイト