РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
699 of 1245 menu

Метод iter_mut

Метод iter_mut возвращает итератор, который позволяет обходить все пары ключ-значение в хеш-таблице и изменять значения. Ключи при этом остаются неизменными, так как изменение ключа могло бы нарушить внутреннюю структуру HashMap. Параметров метод не принимает.

Синтаксис

hashmap.iter_mut()

Пример

Давайте создадим хеш-таблицу и увеличим каждое значение на 1 с помощью iter_mut:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); map.insert("a", 1); map.insert("b", 2); map.insert("c", 3); for (_, value) in map.iter_mut() { *value += 1; } println!("{:?}", map); }

Результат выполнения кода:

{"a": 2, "b": 3, "c": 4}

Пример

Давайте обнулим все значения в хеш-таблице, обращаясь и к ключу, и к значению:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); map.insert("a", 10); map.insert("b", 20); map.insert("c", 30); for (key, value) in map.iter_mut() { println!("{}: {}", key, value); *value = 0; } println!("{:?}", map); }

Результат выполнения кода:

a: 10 b: 20 c: 30 {"a": 0, "b": 0, "c": 0}

Пример

Давайте умножим каждое значение на 2, используя метод iter_mut и не забывая про разыменование:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); map.insert("a", 1); map.insert("b", 2); map.insert("c", 3); for value in map.values_mut() { *value *= 2; } for (key, value) in map.iter_mut() { println!("{} = {}", key, value); } }

Результат выполнения кода:

a = 2 b = 4 c = 6

Смотрите также

  • метод iter,
    который возвращает неизменяемый итератор по парам ключ-значение
  • метод values_mut,
    который возвращает изменяемый итератор только по значениям
  • метод get_mut,
    который возвращает изменяемую ссылку на значение по ключу
  • метод retain,
    который удаляет элементы, не удовлетворяющие условию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить