我有一个结构...
struct playerProbs {
int probPlayer1;
int probPlayer2;
};
一个2-D阵列
playerProbs killChart[11][11]=
我正在尝试将值添加到数组每个位置的每个结构中的probPlayer1
和probPlayer2
。所有值都不同。我想知道最快,最有效的方法来解决这个问题吗?
我看过一些例子,但它们看起来非常非常耗时。 谢谢你的时间!
编辑:当前代码,
struct playerProbs {
int probPlayer1;
int probPlayer2;
};
playerProbs killChart[11][11];
killChart[0][0].probPlayer1 = 30; //getting an error saying size of array
killChart[0][0].probPlayer2 = 30; //must be bigger than 0
答案 0 :(得分:0)
您只填充一个非常小的数据集,因此只使用嵌套的for循环。
for(int i(0); i < 11; ++i)
for(int j(0) j < 11; ++j)
killChart[i][j].probPlayer1 = x;
killChart[i][j].probPlayer2 = y;
}
}
在评论中根据请求编辑,这是您如何以速记方式输入这些内容。 要分配给定值,我们使用:
killChart[0][0].probPlayer1 = 30;
killChart[0][0].probPlayer2 = 30;
killChart[0][1].probPlayer1 = 30;
killChart[0][1].probPlayer2 = 30;
/// ........
killChart[10][10].probPlayer1 = 30;
killChart[10][10].probPlayer2 = 30;
// And so on and so forth for all values
可以运行的完整代码(样本量小得多,只有2x2阵列)如下所示:(我不想输入所有121个值,这说明了使用它的两种方法。)
struct playerProbs {
int probPlayer1;
int probPlayer2;
playerProbs(int _v1, int _v2) : probPlayer1(_v1), probPlayer2(_v2){}
};
int main()
{
playerProbs killChart[2][2] =
{ // Assign via bracket initialization
{ playerProbs(30,30), playerProbs(30,30) },
{ playerProbs(30,30), playerProbs(30,30) },
};
// Assign via individual initialization.
killChart[0][0].probPlayer1 = 30;
killChart[0][0].probPlayer2 = 30;
killChart[0][1].probPlayer1 = 30;
killChart[0][1].probPlayer2 = 30;
killChart[1][0].probPlayer1 = 30;
killChart[1][0].probPlayer2 = 30;
killChart[1][1].probPlayer1 = 30;
killChart[1][1].probPlayer2 = 30;
return 0;
}
答案 1 :(得分:0)
另一种选择是使用大括号初始化
struct playerProbs {
int probPlayer1;
int probPlayer2;
};
playerProbs killChart[11][11] = {
{ {1, 2}, {3, 4}, {5, 6}, {7, 8}, ... }, // 11 { , }s
{ {4, 7}, {3, 5}, {0, 4}, {1, 6}, ... },
... // x11
}
虽然克里斯说11x11元素可能非常难以理解。