【问题标题】:How to initialize all members of an array to the same value in Swift?如何在 Swift 中将数组的所有成员初始化为相同的值?
【发布时间】:2014-07-23 00:11:21
【问题描述】:

我在 Swift 中有一个大数组。我想将所有成员初始化为相同的值(即它可能是零或其他值)。最好的方法是什么?

【问题讨论】:

  • 创建数组,遍历所有元素并设置每个元素,就像在任何其他编程语言中一样。
  • var a = Array(count:100, repeatedValue:0) 正是这个有效问题的答案。
  • @Rod,我会试试的。如果问题被重新打开,您可以将其作为答案发布。
  • 循环比使用向量数学至少慢一个数量级。

标签: arrays initialization swift


【解决方案1】:

实际上,使用 Swift 非常简单。正如Apple's doc 中提到的,您可以使用相同的重复值初始化一个数组,如下所示:

使用旧 Swift 版本

var threeDoubles = [Double](count: 3, repeatedValue: 0.0)

Swift 3.0 开始:

var threeDoubles = [Double](repeating: 0.0, count: 3)

这会给:

[0.0, 0.0, 0.0]

【讨论】:

  • 好像在Swift3里改成var threeDoubles = [Double]( repeating: 0.0, count: 3 )
  • 我发现这真是太慢了,一个 16MB 的阵列需要几秒钟才能清除这种方式。在 C 中,memset(p, 0, 16*1024*1024) 实际上是瞬时的。
  • @wcochran 您是否发现了更好的方法?
  • @javadba 不。仍然感到惊讶的是,当硬件可以快速执行此操作时,Swift 中没有有效的机制来执行此操作。也许值得调查来源。
【解决方案2】:

这将是 Swift 3 中的答案:

var threeDoubles = [Double]( repeating: 0.0, count: 3 )

【讨论】:

  • 自动建议状态 [Double](repeatElement(3.22, count: 5)),仍然显式输入 (repeating, count) 似乎是有效的
猜你喜欢
  • 2010-09-17
  • 1970-01-01
  • 2016-12-09
  • 2020-09-29
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多