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