Введение в диапазоны и представления в C++
Диапазон в C++20 - это последовательность, у которой есть
начало и конец. Контейнер вроде std::vector уже
подходит: итераторы begin и end задают
границы для алгоритмов и циклов.
Представление - легкий взгляд на те же границы.
Оно не копирует элементы, а при обходе подставляет шаги
фильтра или преобразования. Заголовок #include <ranges>
открывает пространство имен std::ranges и
std::views.
Запишем вектор и пройдем его в цикле range-for: это
обычный диапазон. Представления подключим в следующих
уроках, когда понадобится менять обход, не трогая
исходный контейнер:
std::vector<int> data = {3, 6, 9};
for (int x : data) {
std::cout << x << "\n";
}
Такой обход читает значения по мере движения итератора. Представление ведет себя похоже, но может пропускать элементы или подменять их на лету.