Накопление по карте в Rust
Сумму значений собирают в цикле. Перед циклом накопитель обнуляют, на каждом круге добавляют текущее число пары. Ключи для простой суммы не нужны.
Сложим возрасты двух людей:
use std::collections::HashMap;
fn main() {
let mut ages = HashMap::new();
ages.insert("ann", 20);
ages.insert("bob", 30);
let mut sum = 0;
for (_, age) in &ages {
sum += age;
}
println!("{}", sum);
}
На экране 50. Порядок кругов на сумму
не влияет: сложение коммутативно.
Тот же прием считает, сколько значений больше порога:
use std::collections::HashMap;
fn main() {
let mut room = HashMap::new();
room.insert("a", 1);
room.insert("b", 2);
room.insert("c", 3);
let mut count = 0;
for (_, v) in &room {
if v > 1 {
count += 1;
}
}
println!("{}", count);
}
Дана следующая карта:
let mut data = HashMap::new();
data.insert("x", 4);
data.insert("y", 6);
Соберите сумму значений в total
и выведите результат.
Дана следующая карта:
let mut room = HashMap::new();
room.insert("a", 1);
room.insert("b", 4);
room.insert("c", 7);
Найдите сумму только четных значений через
if внутри цикла и выведите ее.
Дана следующая карта:
let mut factors = HashMap::new();
factors.insert("a", 2);
factors.insert("b", 3);
Начните prod с 1, перемножьте
все значения в цикле и выведите prod.