Предположим, у меня есть массив arr
структур A
, где A
- это большая структура, то есть:
struct A {
other members
var m : Int
}
Я хочу выполнить итерацию по массиву и измените m
член в каждом элементе. Есть ли более эффективный подход для выполнения этой операции, чем приведенный ниже?
var arr : [A] = .....
let arrSize = arr.count
arr.withUnsafeMutableBufferPointer { ptr in
for i in (0..<arrSize) {
(ptr.baseAddress! + i).pointee.m = new_value
}
}
Я полагаю, что этот подход создает копию A
каждый раз, когда я к ней обращаюсь, а затем сохраняет свою обновленную копию обратно в массив. Если да, как я могу получить доступ к адресу самого члена m
, чтобы сохранить там новое значение?