gpt4 book ai didi

multidimensional-array - 多维数组 从 C 到 Swift

转载 作者:搜寻专家 更新时间:2023-10-31 22:23:35 24 4
gpt4 key购买 nike

在 C 中,我有以下多维数组:

unsigned wins[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 i;
for(i = 0; i < 8; ++i) {
unsigned *positions;
positions = wins[i];

unsigned pos0 = positions[0];
unsigned pos1 = positions[1];
unsigned pos2 = positions[2];

if(arrayPassedIn[pos0] != 0 && arrayPassedIn[pos0] == arrayPassedIn[pos1] && arrayPassedIn[pos0] == arrayPassedIn[pos2])
{
// Do Something Here
}

我知道很快我可以做类似的事情:

var array = Array<Array<Int>>()

但我不确定这是否会产生相同的访问元素的结果。

最佳答案

您可以使用与 C 代码非常相似的方式创建多维数组:

var wins = [[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]]

Swift 代码以与 C 代码相同的方式使用它也非常相似;主要区别在于使用 for-in 循环而不是标准的 for 循环(尽管您也可以这样做)。

for positions in wins {
var pos0 = positions[0]
var pos1 = positions[1]
var pos2 = positions[2]

if(arrayPassedIn[pos0] != 0 && arrayPassedIn[pos0] == arrayPassedIn[pos1] && arrayPassedIn[pos0] == arrayPassedIn[pos2])
{
// Do Something Here
}
}

请注意,尽管存在相似之处,但 Swift 中的数组类似于 C 中的数组。例如,当您循环遍历 wins 时,您实际上,我们正在创建 positions 数组的副本(实际的内存副本仅在您写入数组时才会发生,因此实际上并没有性能损失)。如果您随后将 positions[0] 设置为不同的值,则该值将不会wins 中更新,就像这样是 C.

关于multidimensional-array - 多维数组 从 C 到 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26291192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com