§ 2.3. Промежуток (span)


Что это?

В стандарте C++20 появился обобщенный класс – std::span (заголовок <span>). Этот класс является частью библиотеки контейнеров, но может быть использован в качестве основы для реализации каких-либо задач в других библиотеках STD. Объект этого класса позволяет получить ссылку на непрерывную последовательность элементов в памяти (последовательный контейнер, Си-массив), но при этом он не будет владеть им, т. е., не сможет копировать или перемещать элементы объекта на который он указывает. Чтобы работа с промежутками была более гибкая, разработчики языка наделили span возможностью изменять значения элементов исходного объекта. Поэтому промежутки нельзя назвать строгим представлением (view), в отличие от range::view.

Это также отличает std::span от std::strig_view

Польза этого шаблона в том, что использование промежутков позволяет избежать ненужного копирования области памяти при передаче аргументов в функцию. Помимо этого, разработчик получает набор готовых инструментов, в виде стандартных функций шаблонов C++, и единообразное оформление программного кода, в котором реализация рутинных задач будет инкапсулирована, и можно сконцентрироваться на самом важном.

Если же функциональности span, по каким-либо причинам, будет недостаточно, то следует обратиться к библиотеке range, обладающей более широкими возможностями.

Просмотр данного материала ограничен! Это закрытая часть сайта, которая доступна только подписчикам! Оформить подписку вы можете на этой странице

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.


Обсуждение закрыто.