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

Функция views::transform

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

Функция возвращает новое представление, элементы которого являются результатами применения переданной функции к элементам исходного диапазона.

Синтаксис

std::views::transform(range, func)

Также доступна форма с pipe-оператором:

range | std::views::transform(func)

Пример

Давайте умножим каждый элемент вектора {1, 2, 3, 4, 5} на 2:

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

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

2 4 6 8 10

Пример

Давайте преобразуем каждое число вектора в строку с префиксом "n":

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

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

"n1" "n2" "n3" "n4" "n5"

Пример

Давайте применим функцию views::transform к строке "abcde", преобразовав каждый символ в верхний регистр:

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

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

"ABCDE"

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

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