Эффективный способ итерации массива структур и изменения члена каждого элемента - PullRequest
0 голосов
/ 19 апреля 2020

Предположим, у меня есть массив 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, чтобы сохранить там новое значение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...