初始化矢量<矢量<矢量<double>> >C++

Initialize a vector<vector<vector<double> > > in C++

本文关键字:gt lt 矢量 C++ double 初始化      更新时间:2023-10-16

我有一个vector of vector of vector of double。我试着初始化它。下面的代码段错误。包括注释的代码也没有帮助(不编译)。

vector<vector<vector<double> > > Q(MAX_GRID);
for(int row = 0; row < MAX_GRID; row++) {
    //vector<vector<double> > inQ(MAX_GRID);
    //Q[row].push_back(inQ);
    for(int col = 0; col < MAX_GRID; col++)
        for(int action = 0; action <= 3; action++)
            Q[row][col].push_back(0);
}

变化

vector<vector<vector<double> > > Q(MAX_GRID);

vector<vector<vector<double> > > Q(MAX_GRID, vector<vector<double> >(MAX_GRID));

否则第二次元由空向量组成。

您可以对第三维做同样的事情,完全避免循环。

如果你有std::array,我建议这样做:

std::array<std::array<std::array<double, 4>, MAX_GRID>, MAX_GRID> Q;

不需要其他初始化