arrays - Swift 二维数组 : Equal rights for rows and columns

标签 arrays swift sorting storing-data

给定简单的二维数组...

let grid = [[Cell]]()

...并填充 Cells 以创建 10 行 x 10 列矩阵。我可以通过以下方式访问网格的第 7 行...

let rowSeven = grid[6]

提取第 7 列全部内容的最简单方法是什么?我知道可以通过循环遍历每一行并提取每行中的第七个项目来完成,但我正在寻找一个可以以相同方式处理行和列的答案。

我特别愿意接受使用二维数组的替代方案的想法,因为将来我可能希望独立于网格中的行或列来映射和过滤单元格。

最佳答案

我认为您应该创建自己的类型(结构)来呈现您正在寻找的界面。然后,您可以根据需要实现该结构并更改它以满足您的需求,而无需更改使用该结构的代码。我期望这样的界面:

struct Grid<T> {
    func at(x: Int, y: Int) -> T
    func at(x: Int) -> [T]
    func at(y: Int) -> [T]
    // add setters as necessary.
}

您可以使用 2D 数组来实现上述内容,就像您在行主要或列主要中已有的那样,或者作为一维数组,或者作为稀疏数组(即,一个字典,其中键是 x,y 元组,值为 T。

更重要的是,您可以测试每种想法的性能,并使用最适合您情况的想法,无需更改使用网格结构的代码。

关于arrays - Swift 二维数组 : Equal rights for rows and columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532241/

相关文章:

c - 为什么 sizeof 没有返回数组中正确的元素数量?

swift - 尝试在 Pubnub 中创建 channel 时使用未声明的类型 'PNChannel'

ios - 我试图使用 graph api v2.4 获取我的 friend 姓名和 ID,但数据返回空 :

mysql - 根据 "next_id"字段对 MySQL 结果的行进行排序

java - 如何按除第一个字母以外的所有内容对字符串数组进行排序

java原始数组与列表实现

javascript - 为什么我不能在 .keys() 的结果上调用 .join()?

c++ - 如何在程序中改变多维数组的大小?

ios - 访问错误、多线程、GCD、swift

algorithm - 这是什么排序算法,它是如何工作的? (如果没有名称或知名资源。)