% Вектора
«Вектор» — это динамический или, по-другому, «растущий» массив, реализованный в
виде стандартного библиотечного типа Vec<T>
(где <T>
является
обобщённым типом). Вектора всегда размещают данные в куче. Вы можете
создавать их с помощью макроса vec!
:
#![allow(unused)] fn main() { let v = vec![1, 2, 3, 4, 5]; // v: Vec<i32> }
(Заметьте, что, в отличие от макроса println!
, который мы использовали ранее,
с vec!
используются квадратные скобки []
. Rust разрешает использование и
круглых, и квадратных скобок в обеих ситуациях — это просто стилистическое
соглашение.)
Для создания вектора из повторяющихся значений есть другая форма vec!
:
#![allow(unused)] fn main() { let v = vec![0; 10]; // десять нулей }
Доступ к элементам
Чтобы получить значение по определенному индексу в векторе, мы используем []
:
#![allow(unused)] fn main() { let v = vec![1, 2, 3, 4, 5]; println!("Третий элемент вектора v равен {}", v[2]); }
Индексы отсчитываются от 0
, так что третьим элементом является v[2]
.
Обход
Вы можете обойти элементы вектора с помощью for
. Есть три варианта:
#![allow(unused)] fn main() { let mut v = vec![1, 2, 3, 4, 5]; for i in &v { println!("Ссылка {}", i); } for i in &mut v { println!("Изменяемая ссылка {}", i); } for i in v { println!("Владение вектором и его элементами {}", i); } }
У векторов есть много других полезных методов, о которых вы можете прочитать в документации API.