2016-03-08 217 views
0

我正在構建tictactoe遊戲,但我似乎無法弄清楚如何初始化2D矢量。我知道如何爲一維向量做到這一點,我認爲一個二維矢量將同樣的原則進行操作,但是這個代碼不工作:如何初始化2D矢量

vector<vector<int>> PossibleWins[8][3] = {{0,1,2},{3,4,5},{6,7,8},{0,3,6},{1,4,7},{2,5,8},{0,4,8},{2,4,6}}; 

我已經試過這有一些變化,但我沒有任何運氣。編譯器說:no viable conversion from int to vector<vector<int>>

+0

「*我知道如何做到這一點的一維向量*」嗯,你的代碼,一維的情況下判斷將是'vector PossibleWins [8] = ...'。這不是*你會怎麼做1d的情況。 –

+3

失去'[8] [3]'和'='。 – WhozCraig

+1

你有一個矢量向量的二維數組。 – juanchopanza

回答

1

你應該做的是這樣的:

std::vector<std::vector<int>> PossibleWins {{0,1,2},{3,4,5},{6,7,8},{0,3,6},{1,4,7},{2,5,8},{0,4,8},{2,4,6}}; 
1

當您使用

vector<vector<int>> PossibleWins[8][3] = {{0,1,2},{3,4,5},{6,7,8},{0,3,6},{1,4,7},{2,5,8},{0,4,8},{2,4,6}}; 

編譯器認爲這些數字大家表示std::vector<std::vector<int>>。它抱怨因爲數字不能用於初始化std::vector<std::vector<int>>

比較你將如何初始化二維數組。

int PossibleWins[8][3] = {{0,1,2},{3,4,5},{6,7,8},{0,3,6},{1,4,7},{2,5,8},{0,4,8},{2,4,6}}; 

由於每個數字都是int,所以可以工作。

初始化向量的向量來代表一個二維數組,你需要使用

vector<vector<int>> PossibleWins{{0,1,2},{3,4,5},{6,7,8},{0,3,6},{1,4,7},{2,5,8},{0,4,8},{2,4,6}};