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

Функция erase_if

Функция erase_if удаляет из map все элементы, которые удовлетворяют заданному условию. В первый параметр мы передаем контейнер, из которого нужно удалить элементы, а во второй - предикат (функцию или лямбда-выражение), который принимает элемент контейнера и возвращает true, если элемент нужно удалить, или false, если элемент следует оставить.

Функция возвращает количество удаленных элементов. Обратите внимание, что erase_if - это свободная функция, а не метод класса map, поэтому она не вызывается через точку.

Синтаксис

erase_if(map, predicate)

Пример

Давайте удалим из map все элементы, значение которых меньше 30:

#include <iostream> #include <map> using namespace std; int main() { map<string, int> m = { {"a", 10}, {"b", 20}, {"c", 30}, {"d", 40}, {"e", 50} }; int res = erase_if(m, [](const auto& pair) { return pair.second < 30; }); cout << res << endl; for (const auto& pair : m) { cout << pair.first << " " << pair.second << endl; } return 0; }

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

2 "c 30" "d 40" "e 50"

Пример

Давайте удалим из map все элементы, ключ которых начинается с символа 'a':

#include <iostream> #include <map> using namespace std; int main() { map<string, int> m = { {"apple", 1}, {"banana", 2}, {"apricot", 3}, {"cherry", 4}, {"avocado", 5} }; int res = erase_if(m, [](const auto& pair) { return pair.first[0] == 'a'; }); cout << res << endl; for (const auto& pair : m) { cout << pair.first << " " << pair.second << endl; } return 0; }

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

3 "banana 2" "cherry 4"

Пример

Давайте удалим из map все элементы, ключ которых равен "b" или "d":

#include <iostream> #include <map> using namespace std; int main() { map<string, int> m = { {"a", 1}, {"b", 2}, {"c", 3}, {"d", 4}, {"e", 5} }; int res = erase_if(m, [](const auto& pair) { return pair.first == "b" || pair.first == "d"; }); cout << res << endl; for (const auto& pair : m) { cout << pair.first << " " << pair.second << endl; } return 0; }

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

2 "a 1" "c 3" "e 5"

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

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