gpt4 book ai didi

arrays - 查找数组元素索引的更好方法?

转载 作者:搜寻专家 更新时间:2023-11-01 05:32:18 24 4
gpt4 key购买 nike

我对 Swift 和一般编程还比较陌生。

我正在开展一个项目,该项目使用二维数组来表示我存储自定义对象的网格:

class Grid {
var element: [[GridElement]]
}

我经常需要通过坐标访问元素。例如:

let gridElement = grid.element[coord.x][coord.y]

但是 我还需要经常从给定的 gridElement(它在 2d 数组中的索引)中获取坐标。这导致嵌套循环似乎不是最快或最优雅的解决方案:

func getCoord(_ gridElement: GridElement) -> Coord {
for x in 0..<xSize {
for y in 0..<ySize {
if element[x][y] == gridElement { return Coord(x: x, y: y) }
}
}
return Coord(x: -1, y: -1)
}

因为我希望它能顺利处理大型网格,所以这看起来不像是解决方案。我错过了一些简单的东西吗?

我正在考虑将坐标存储在 GridElement 对象本身中,但这也感觉像是糟糕的设计,因为当 GridElement 改变位置时我需要不断更新它。

这更像是一个设计/架构问题,而不是寻找一个神奇的功能来解决我的问题。感觉应该建立双向引用的设计模式,但我还没有找到答案。有什么建议吗?

最佳答案

我认为您的 getCoord 函数应该是这样的:

func getCoord(_ gridElement: GridElement) -> Coord {
for (i, row) in element.enumerated() {
if let index = row.firstIndex(of: gridElement) {
return Coord(x: i, y: index)
}
}
return Coord(x: -1, y: -1)
}

关于arrays - 查找数组元素索引的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55177047/

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