Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsPmMuSF 221 of 373 menu
◀ ▶

Заполнение многомерных структур в Rust

Массив векторов

Пустой массив векторов заполняют двумя циклами. Внешний проходит ячейки массива, внутренний дописывает числа в вектор через push:

let mut rows: [Vec<i32>; 2] = [Vec::new(), Vec::new()]; for i in 0..2 { for j in 1..=3 { rows[i].push(j); } } println!("{}", rows[1][2]); // выведет 3

Карта векторов

Векторы в карте собирают так же. Вместо индекса массива берут ключ:

use std::collections::HashMap; fn main() { let mut map: HashMap<&str, Vec<i32>> = HashMap::new(); let keys = ["a", "b"]; for i in 0..2 { let mut row = Vec::new(); for j in 1..=2 { row.push(j); } map.insert(keys[i], row); } println!("{}", map["b"][1]); // выведет 2 }

Вектор карт

Каждый элемент вектора - отдельная карта. Ее собирают на шаге цикла и кладут в вектор через push:

use std::collections::HashMap; fn main() { let mut table: Vec<HashMap<&str, i32>> = Vec::new(); for i in 1..=2 { let mut row = HashMap::new(); row.insert("id", i); table.push(row); } println!("{}", table[1]["id"]); // выведет 2 }

Практические задачи

Заполните массив из двух векторов числами 1, 2 и 3 в каждом. Выведите последний элемент второго вектора.

Заполните карту векторов. По ключам "a" и "b" лежат числа 4 и 5. Выведите второе число ключа "b".

Заполните вектор двумя картами. В каждой есть ключ "age", числа 27 и 31. Выведите возраст второй карты.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить