Daily bit(e) C++. std::views::transform

Добавлено 5 октября 2026 в 17:40

Daily bit(e) C++ 139, представление с ленивым преобразованием в C++20 – std::views::transform.

Daily bit(e) C++

std::views::transform из стандарта C++20 позволяет формировать (в режиме ленивых вычислений) диапазон преобразованных элементов, в том числе с возможностью изменения типа самих элементов.

#include <vector>
#include <ranges>


std::vector<int> data{1,2,3,4,5};

// сформировать представление квадратов значений
constexpr auto square = 
  std::views::transform([](int v) { return v * v; });
for (int v : data | square) 
{
    // итерация по 1,4,9,16,25
}

constexpr auto as_strings = 
  std::views::transform([](int v) { return std::to_string(v); });
// views::transform может создавать представление с другим типом элементов
for (std::string v : data | as_strings) 
{
    // итерация по "1"s,"2"s,"3"s,"4"s,"5"s
}

Пример на Compiler Explorer

Теги

C++ / CppDaily bit(e) C++Программирование