MATLAB использует ленивый механизм копирования или копирования при записи.Это означает, что когда вы делаете
B = A;
, оба A
и B
указывают на одну и ту же память до тех пор, пока вы не попытаетесь изменить один из массивов, и в этот момент MATLAB скопирует данные таким образом, чтобы изменить один из них.не влияет на другую копию.
Это также означает, что, если Containers.Map
объект map
,
keys = map.keys
не будет копировать ключи, вместо этого будет keys
обмениваться данными с ключами, поскольку они хранятся внутри карты.
Обратите внимание, что
keys = map.keys;
for keyIdx = 1:numel(keys)
value = map(keys{keyIdx})
end
совпадает с
for key = map.keys
value = map(key{1})
end
и так же, как
for value = map.values
value = value{1}
end
Ни в одном из этих случаев данные не копируются!
(Я догадываюсь о синтаксисе, поскольку я сейчас набираю текст на своем телефоне, я думаю, что индексирование {1}
здесь требуется, но я могу ошибаться.)