C ++:创建一个Struct的二维数组

时间:2016-04-07 20:28:06

标签: c++ arrays multidimensional-array struct int

我有一个结构...

struct playerProbs {
int probPlayer1;
int probPlayer2;
};

一个2-D阵列 playerProbs killChart[11][11]=

我正在尝试将值添加到数组每个位置的每个结构中的probPlayer1probPlayer2。所有值都不同。我想知道最快,最有效的方法来解决这个问题吗?

我看过一些例子,但它们看起来非常非常耗时。 谢谢你的时间!

编辑:当前代码,

    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

2 个答案:

答案 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元素可能非常难以理解。