Создание вектора
Часть раздела Логика и управление потоком путешествия по 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![] также поддерживает синтаксис повторения для создания вектора, заполненного одинаковыми значениями. Используй vec![value; n], чтобы создать вектор из n элементов, каждый из которых равен value:
let zeros = vec![0; 5]; // [0, 0, 0, 0, 0]
let tens = vec![10; 3]; // [10, 10, 10]Это особенно полезно, когда нужно создать вектор заданного размера, определяемого во время выполнения, например на основе пользовательского ввода:
let n = 4;
let data = vec![10; n]; // [10, 10, 10, 10]Оба подхода создают вектор одного и того же типа — выбор зависит от того, есть ли у тебя начальные значения или ты планируешь постепенно формировать вектор.
Задание
ЛегкоНа вход будет подано число, обозначающее количество элементов вектора. Считайте входные данные, преобразуйте их в целое число и создайте вектор с таким количеством элементов, где каждый элемент равен числу 10.
Требования:
- Считайте входные данные и преобразуйте их в целое число
- Создайте вектор с помощью макроса
vec![] - Вектор должен содержать указанное количество элементов
- Значение каждого элемента должно быть равно
10 - Выведите каждый элемент на отдельной строке
Входные данные: Одно целое число, обозначающее количество элементов
Выходные данные: Выведите каждый элемент вектора на отдельной строке
Попробуйте сами
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
// Выведите каждый элемент на отдельной строке
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
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Итоги: поиск элементаПотренируйтесь самостоятельно: Онлайн-компилятор Rust