Создание вектора
Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 8 из 66.
Теперь, когда вы понимаете, что такое векторы, давайте научимся их создавать. Rust предоставляет два основных способа создания вектора, каждый из которых подходит для различных ситуаций.
Первый метод использует Vec::new() для создания пустого вектора, в который вы сможете добавить элементы позже:
let mut numbers = Vec::new();Обратите внимание, что мы используем mut, потому что мы, скорее всего, захотим добавить элементы в этот пустой вектор позже. Rust не всегда может определить тип пустого вектора, поэтому вам может потребоваться указать его явно:
let mut numbers: Vec<i32> = Vec::new();Второй метод использует макрос vec![] для создания вектора с начальными значениями:
let numbers = vec![1, 2, 3, 4, 5];Макрос vec![] более удобен, когда вы знаете начальные значения. Rust может автоматически определить тип на основе предоставленных вами значений, поэтому аннотация типа не требуется. Этот вектор содержит пять целых чисел и готов к немедленному использованию.
Макрос vec![] также поддерживает синтаксис повторения для создания вектора, заполненного одним и тем же значением определённое количество раз:
let zeros = vec![0; 5]; // [0, 0, 0, 0, 0]Синтаксис выглядит как vec![value; n], где value — это элемент для повторения, а n — количество повторений. Это полезно, когда вам нужен вектор известного размера, предварительно заполненный значением по умолчанию.
Оба подхода создают один и тот же тип вектора — выбор зависит от того, есть ли у вас начальные значения или вы планируете создавать вектор постепенно.
Задание
ЛегкоВы получите на вход число, представляющее количество элементов, которое должен содержать вектор. Прочитайте входные данные, преобразуйте их в целое число и создайте вектор с указанным количеством элементов, где каждый элемент равен числу 10.
Требования:
- Прочитать входные данные и преобразовать их в целое число
- Создать вектор, используя макрос
vec![] - Вектор должен содержать указанное количество элементов
- Каждый элемент должен иметь значение
10 - Вывести каждый элемент на отдельной строке
Входные данные: Одно целое число, представляющее количество элементов
Выходные данные: Выведите каждый элемент вектора на отдельной строке
Шпаргалка
Rust предоставляет два основных способа создания векторов:
Использование Vec::new() для создания пустого вектора:
let mut numbers = Vec::new();Используйте mut, если вы планируете добавлять элементы позже. Вам может потребоваться явно указать тип:
let mut numbers: Vec<i32> = Vec::new();Использование макроса vec![] для создания вектора с начальными значениями:
let numbers = vec![1, 2, 3, 4, 5];Макрос vec![] автоматически определяет тип на основе предоставленных значений.
Использование макроса vec![] для создания вектора с повторяющимся значением:
let numbers = vec![0; 5]; // [0, 0, 0, 0, 0]Синтаксис vec![value; n] создает вектор, содержащий value, повторенное n раз.
Попробуйте сами
use std::io;
fn main() {
// Считать ввод
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let n: usize = input.trim().parse().expect("Invalid input");
// TODO: Напишите ваш код ниже
// Создайте вектор из n элементов, каждый из которых равен 10
// Выведите каждый элемент на отдельной строке
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела 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Итоги: поиск элемента