Что такое вектор?
Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 7 из 66.
В Rust есть два основных способа хранения коллекций данных: массивы и векторы. В то время как массивы имеют фиксированный размер, который должен быть известен во время компиляции, векторы — это динамические коллекции, которые могут увеличиваться и уменьшаться во время выполнения программы.
Вектор, записываемый как Vec<T>, — это тип динамического массива в Rust. Символ T представляет тип элементов, которые будет содержать вектор — например, Vec<i32> для целых чисел или Vec<String> для строк. В отличие от массивов, где необходимо заранее указывать точное количество элементов, векторы могут быть изначально пустыми, а элементы могут добавляться или удаляться во время выполнения программы.
Вот когда стоит выбрать вектор вместо массива:
// Массив — фиксированный размер, известный на этапе компиляции
let scores = [85, 92, 78, 90]; // всегда ровно 4 элемента
// Вектор — динамический размер, может меняться во время выполнения
let mut grades = Vec::new(); // начинается пустым, может растиВекторы идеально подходят в тех случаях, когда вы заранее не знаете, сколько элементов вам понадобится, например, для хранения пользовательского ввода, чтения данных из файлов или создания списков, которые меняются в зависимости от логики программы. Они обеспечивают гибкость, которую не могут предложить массивы, сохраняя при этом эффективный доступ к элементам.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Шпаргалка
Векторы (Vec<T>) — это динамические коллекции, которые могут увеличиваться и уменьшаться во время выполнения программы, в отличие от массивов, имеющих фиксированный размер, известный на этапе компиляции.
T представляет тип элементов, которые будет содержать вектор:
Vec<i32> // вектор целых чисел
Vec<String> // вектор строкСоздание вектора:
let mut grades = Vec::new(); // начинается пустым, может растиСравнение с массивами:
// Массив — фиксированный размер
let scores = [85, 92, 78, 90]; // всегда ровно 4 элемента
// Вектор — динамический размер
let mut grades = Vec::new(); // может изменяться во время выполненияИспользуйте векторы, когда вы заранее не знаете, сколько элементов вам понадобится, например, для хранения пользовательского ввода, чтения данных из файлов или создания списков, которые меняются в зависимости от логики программы.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
1Продвинутое управление потоком выполнения
Выражение 'match'Сопоставление нескольких значенийСопоставление диапазоновВыражение 'if let'Циклы как выраженияИтоги — Простой парсер команд4Группировка данных с помощью структур
Что такое структура?Обзор структурДоступ к полям структурыИзменяемые структурыСтруктуры как параметры функцийКортежные структурыИтоги: создание структуры Book7Обработка ошибок с помощью 'Result'
Что такое 'Result'?Использование 'match' с 'Result'is_ok() и is_err()Сокращения: unwrap и expectОператор вопросительного знака '?'Парсинг строк в числаИтоги: функция безопасного деления10Замыкания и анонимные функции
Что такое замыкание?Определение простого замыканияЗамыкания с параметрамиЗахват окруженияИтоги: Простое замыкание-сумматор2Введение в векторы
Что такое вектор?Создание вектораДобавление элементов с помощью pushДоступ к элементам вектораИтерация по векторуИзменяемая итерацияУдаление элементовИтоги — Простой счетчик очков5Пары «ключ-значение» в Hash Map
Что такое Hash Map?Создание Hash MapВставка пар «ключ-значение»Доступ к значениямИтерация по Hash MapОбновление значенияУдаление парыИтоги — Счетчик слов8Проект: Простой инвентарь товаров
Настройка проектаДобавление товараПроверка наличияПродажа товараСобираем всё воедино3Список дел в командной строке
Настройка проектаДобавление задачиПросмотр всех задачУдаление задачиИтоговый код6Обработка отсутствия значения с 'Option'
Что такое 'Option'?Использование 'match' с 'Option'is_some() и is_none()Распаковка 'Option'Метод expectЗначение по умолчанию: unwrap_orИтоги: поиск элемента