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

Функция ranges::for_each

Функция ranges::for_each применяет заданную функцию к каждому элементу диапазона. В первом параметре мы передаём диапазон, элементы которого нужно обработать, а во второй - функцию (или лямбда-выражение), которая будет вызвана для каждого элемента. Функция возвращает объект, содержащий переданную функцию и позицию конца диапазона.

В отличие от классического std::for_each, версия из пространства имён ranges принимает диапазон целиком, а не пару итераторов. Это делает код короче и выразительнее.

Синтаксис

std::ranges::for_each(range, func)

Пример

Давайте применим лямбда-выражение к каждому элементу вектора и выведем его на экран:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> v = {1, 2, 3, 4, 5}; ranges::for_each(v, [](int n) { cout << n << " "; }); cout << endl; return 0; }

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

1 2 3 4 5

Пример

Давайте изменим каждый элемент вектора, умножив его на 2, и выведем результат:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> v = {1, 2, 3, 4, 5}; ranges::for_each(v, [](int& n) { n *= 2; }); for (int n : v) { cout << n << " "; } cout << endl; return 0; }

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

2 4 6 8 10

Обратите внимание, что лямбда-выражение принимает ссылку int&, поэтому изменения применяются непосредственно к элементам вектора.

Пример

Давайте применим функцию к каждому символу строки и выведем его в верхнем регистре:

#include <iostream> #include <string> #include <algorithm> #include <cctype> using namespace std; int main() { string str = "abcde"; ranges::for_each(str, [](char c) { cout << (char)toupper(c); }); cout << endl; return 0; }

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

"ABCDE"

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

  • функция ranges::find,
    которая ищет элемент в диапазоне
  • функция ranges::count,
    которая подсчитывает количество элементов
  • функция ranges::copy,
    которая копирует элементы диапазона
  • функция ranges::sort,
    которая сортирует элементы диапазона
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить