struct Array<T> : MutableCollectionType, Sliceable, _DestructorSafeContainer { } extension Array { func withUnsafeBufferPointer<R>(body: @noescape (UnsafeBufferPointer<T>) -> R) -> R mutating func withUnsafeMutableBufferPointer<R>(body: @noescape (inout UnsafeMutableBufferPointer<T>) -> R) -> R }
Array要素のswiftでの内部実装がメモリ上に連続的に並んでいるとは限らない。
そのため、withUnsafeBufferPointerを呼び出した時点で、要素が連続したメモリエリアに作成されコピーされる。
そして生成されたUnsafeBufferPointer
これを使って高速化するケースがあるのなら使えばよいが、私なら最初からUnsafeBufferPointer