Swift에서 배열의 모든 멤버를 동일한 값으로 초기화하는 방법은 무엇입니까?


87

Swift에 큰 배열이 있습니다. 모든 멤버를 동일한 값으로 초기화하고 싶습니다 (즉, 0 또는 다른 값이 될 수 있음). 최선의 접근 방법은 무엇입니까?


2
다른 프로그래밍 언어에서와 마찬가지로 배열을 만들고 모든 요소를 ​​반복하고 각 요소를 설정합니다.
Robert Harvey

19
var a = Array(count:100, repeatedValue:0)이 유효한 질문에 대한 답입니다.
Rod

@Rod, 나는 그것을 시도 할 것이다. 질문이 다시 열리면 답변으로 게시 할 수 있습니다.
m_power 2014-06-05

2
루핑은 벡터 수학을 사용하는 것보다 적어도 한 배 느립니다.
μολὼν.λαβέ 2015-04-30

답변:


176

사실 Swift를 사용하면 매우 간단합니다. Apple의 doc 에서 언급했듯이 다음 과 같이 동일한 반복 값으로 배열을 초기화 할 수 있습니다.

오래된 스위프트 버전 :

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]

16
Swift3에서로 변경 보인다var threeDoubles = [Double]( repeating: 0.0, count: 3 )
ppaulojr

나는 이것이 정말로 sloooooooow라는 것을 발견했다. 16MB 배열은이 방법을 지우는 데 몇 초가 걸립니다. C에서는 memset(p, 0, 16*1024*1024)거의 즉각적입니다.
wcochran

@wcochran이 작업을 수행하는 더 좋은 방법을 찾았습니까?
StephenBoesch

@javadba 아니요. 하드웨어가이 작업을 빠르게 수행 할 수있을 때 Swift에서이를 수행 할 수있는 효율적인 메커니즘이 아직 없다는 사실에 여전히 놀랐습니다. 출처를 조사 할 가치가있을 수도 있습니다.
wcochran

36

이것은 Swift 3의 대답입니다.

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

1
Autosuggest 상태 [Double] (repeatElement (3.22, 개수 : 5)), 여전히 명시 적으로 입력 (반복, 개수)이 유효한 것 같습니다.
Ashwin G
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.