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

Функция views::filter

Функция views::filter создает представление, которое включает в себя только те элементы исходного диапазона, для которых предикат возвращает true. В первый параметр мы передаем диапазон или представление, а во второй - предикат, который принимает элемент и возвращает bool. Элементы, для которых предикат вернул false, в результирующее представление не попадают.

Синтаксис

std::views::filter(range, predicate)

Пример

Давайте отфильтруем из вектора только четные числа:

#include <iostream> #include <vector> #include <ranges> using namespace std; int main() { vector<int> vec = {1, 2, 3, 4, 5}; for (int num : vec | views::filter([](int n) { return n % 2 == 0; })) { cout << num << " "; } cout << endl; return 0; }

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

2 4

Пример

Давайте отфильтруем из вектора числа, которые больше 3:

#include <iostream> #include <vector> #include <ranges> using namespace std; int main() { vector<int> vec = {1, 2, 3, 4, 5}; auto res = vec | views::filter([](int n) { return n > 3; }); for (int num : res) { cout << num << " "; } cout << endl; return 0; }

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

4 5

Пример

Давайте отфильтруем строки, длина которых больше 3:

#include <iostream> #include <vector> #include <string> #include <ranges> using namespace std; int main() { vector<string> vec = {"a", "ab", "abc", "abcd", "abcde"}; for (const string& str : vec | views::filter([](const string& s) { return s.length() > 3; })) { cout << str << " "; } cout << endl; return 0; }

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

"abcd" "abcde"

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

  • функция views::transform,
    которая преобразует элементы диапазона
  • функция views::take,
    которая берет первые N элементов диапазона
  • функция views::drop,
    которая пропускает первые N элементов диапазона
  • функция views::all,
    которая создает представление из диапазона
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить