【问题标题】:How to create a 3D array/matrix in swift?如何快速创建 3D 数组/矩阵?
【发布时间】:2015-02-14 23:09:27
【问题描述】:

我正在尝试创建一个 3D 数组,它将图像的高度、宽度和 RGB 值存储为矩阵/数组的维度。 这是我正在尝试的:

var array = Array<Array<Array<Int>>>()
var testArray = [[[Int]]] ()

现在我已经初始化了这些数组,如何设置特定的行数和列数? 谢谢!

【问题讨论】:

  • 您必须向每个数组添加适当数量的对象 - 使用嵌套循环
  • 好的。你能举一个制作 10 x 20 x 30 阵列的例子吗?谢谢。

标签: ios arrays swift matrix


【解决方案1】:

在 Swift 支持固定长度数组之前,我会这样做:

let zArry = [Int](repeating: 0, count: 10)
let yArry = [[Int]](repeating: zArry, count: 20)
let xArry = [[[Int]]](repeating: yArry, count: 30)

let val = xArry[2][1][1]

【讨论】:

  • 你不能使用repeatedValue,因为它会在yArry的每个元素中放置相同的zArry,在xArry的每个元素中放置相同的yArry
  • 你确定吗?该文档指出“repeatedValue”“构造一个count 元素的数组,每个元素都初始化为repeatedValue”。 Ints 是一种值类型。它不应该使用引用。
  • 你是对的 - 因为数组是结构,所以它们是被复制的。如果数组是一个对象,它就行不通了。
  • 数组是值类型这一事实可能会让某人绊倒,如果有的话。无论如何,从 Ints 到数组的所有内容都是这个 sn-p 中的值类型。如果 Arrays 是引用类型(如您所说),则 sn-p 将不起作用,但如果 Ints 是引用类型,它也将不起作用。 这两种类型都需要是值类型才能工作(它们是)。
  • xArry[2][1][1] 在 zArry 中返回 2,在 yArry 中返回 1,在 xArry 中返回 1?
猜你喜欢
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2022-07-05
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
相关资源
最近更新 更多