2016-03-08 127 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}};