2013-04-08 91 views
3

我有一個雙向量向量向量。我正在嘗試初始化它。以下代碼段錯誤。包括註釋代碼也沒有幫助(不編譯)。在C++中初始化一個向量<vector <vector <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); 
} 

回答

4

變化

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

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

否則第二維由空載體。

你可以用第三維來做同樣的事情,完全避免循環。

2

如果你有std::array我建議是這樣的:

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

不需要其他初始化。