Цикл по многомерным комбинациям в Rust
Массив векторов
Внешний цикл идет по ячейкам массива, внутренний - по элементам вектора. Сумму копят с нуля:
let rows = [vec![1, 2], vec![3, 4, 5]];
let mut sum = 0;
for row in &rows {
for val in row {
println!("{}", val);
sum += val;
}
}
println!("{}", sum); // выведет 15
Карта векторов
Внешний цикл дает вектор по очередному ключу, внутренний проходит его элементы. Порядок ключей не обещан:
use std::collections::HashMap;
fn main() {
let map: HashMap<&str, Vec<i32>> = HashMap::from([
("a", vec![1, 2]),
("b", vec![3, 4]),
]);
let mut sum = 0;
for (_, row) in &map {
for val in row {
println!("{}", val);
sum += val;
}
}
println!("{}", sum); // выведет 10
}
Вектор карт
Внешний цикл выбирает карту по индексу, внутренний складывает значения ее пар:
use std::collections::HashMap;
fn main() {
let table = vec![
HashMap::from([("a", 1), ("b", 2)]),
HashMap::from([("a", 3), ("b", 4)]),
];
let mut sum = 0;
for row in &table {
for (_, val) in row {
println!("{}", val);
sum += val;
}
}
println!("{}", sum); // выведет 10
}
Дан массив векторов:
let rows = [vec![10, 20], vec![30]];
Найдите сумму всех чисел и выведите ее.
Дана карта векторов:
let map: HashMap<&str, Vec<i32>> = HashMap::from([
("Ann", vec![5, 4, 5]),
("Bob", vec![3, 5, 4]),
]);
Найдите сумму всех оценок и выведите ее.
Дан вектор карт:
let table = vec![
HashMap::from([("a", 10), ("b", 20)]),
HashMap::from([("a", 30), ("b", 40)]),
];
Найдите сумму всех чисел и выведите ее.