|
@@ -263,16 +263,16 @@ auto a = [1, 5, 2, 3, 6];
|
|
|
|
|
|
Инициализация массива другим массивом (`auto b = a`), равно как и присваивание одного массива другому (`int[] b; … b = a;`) не влечет скрытого автоматического копирования данных. Как показано на рис. 4.2, эти действия просто заставляют `b` ссылаться на ту же область памяти, что и `a`.
|
|
|
|
|
|
-Более того, получение среза массива `b` сокращает область памяти, «видимую» `b`, также без всякого копирования `b`. При условии что исходное состояние массива задано на рис. 4.2, выполнение инструкции
|
|
|
+
|
|
|
+
|
|
|
+***Рис. 4.2.*** *При выполнении инструкции `auto b = a;` содержимое a не копируется: вместо этого создается объект типа «массив», который ссылается на те же данные*
|
|
|
+
|
|
|
+Более того, получение среза массива `b` сокращает область памяти, «видимую» `b`, также без всякого копирования `b`. При условии что исходное состояние массива задано на рис. 4.2, выполнение инструкции
|
|
|
|
|
|
```d
|
|
|
b = b[1 .. $ - 2];
|
|
|
```
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-***Рис. 4.2.*** *При выполнении инструкции `auto b = a;` содержимое a не копируется: вместо этого создается объект типа «массив», который ссылается на те же данные*
|
|
|
-
|
|
|
приведет лишь к сокращению диапазона, доступного `b`, без какого-либо копирования данных (рис. 4.3).
|
|
|
|
|
|

|