Что это?
Диапазоны (ranges) — это новая библиотека STD, появившаяся в стандарте C++20. Классы ranges расширяют и обобщают классы старых библиотек algorthm и iterator так, чтобы они были более адаптированы к функциональному стилю программирования. Код стал более понятным, не таким громоздким, как ранее, а, кроме того, менее подвержен ошибкам. Чтобы получить такой результат старые библиотеки были переписаны и входят в состав ranges.
Диапазоном называется всякая итерируемая последовательность. Иными словами — последовательность, для которой существует объект-итератор. Контейнеры, такие как vector и list, тоже являются диапазонами. Однако ranges создает и управляет не собственно диапазонами, а их представлениями (views), которые являются диапазонами лишь косвенно. Представления — это такие объекты, которые не владеют исходным диапазоном, т. е. они не могут производить над исходным диапазоном такие операции как копирование, перемещение и удаление. Какая-либо операция над views будет выполняться в течение постоянного времени, независимо от количества элементов в данном представлении.