初始化向量<vector <vector <double>&gt; &GT;在C ++中</vector <vector <double>

时间:2013-04-08 06:40:24

标签: c++ vector initialization

我有一个矢量双向量矢量。我正在尝试初始化它。以下代码段错误。包括注释代码也没有帮助(不编译)。

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);
}

2 个答案:

答案 0 :(得分:4)

更改

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

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

否则第二个维度由空向量组成。

你可以用第三个维度做同样的事情,完全避免循环。

答案 1 :(得分:2)

如果您有std::array我建议的话:

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

无需其他初始化。