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