Namespaces
Variants

std::ranges:: views:: to_input, std::ranges:: to_input_view

From cppreference.net
Ranges library
Range adaptors
Определено в заголовочном файле <ranges>
template < ranges:: input_range V >

requires ranges:: view < V >
class to_input_view

: public ranges:: view_interface < to_input_view < V >>
(1) (начиная с C++26)
namespace views {

inline constexpr /* неспецифицировано */ to_input = /* неспецифицировано */ ;

}
(2) (начиная с C++26)
Сигнатура вызова
template < ranges:: viewable_range R >

requires /* см. ниже */

constexpr ranges:: view auto to_input ( R && r ) ;
(начиная с C++26)
1) Адаптер диапазона, представляющий представление базового view как исключительно input_range и не как common_range .
2) RangeAdaptorObject . Пусть e будет подвыражением, и пусть T будет decltype ( e ) . Тогда выражение views :: to_input ( e ) является эквивалентным по выражению :
  • views:: all ( e ) , если это корректное выражение и все следующие условия true :
  • to_input_view { e } в противном случае.

Следовательно, to_input_view никогда не моделирует концепции диапазонов, которые сильнее, чем input_range . В частности, он не моделирует все следующие:

Кроме того, to_input_view не моделирует common_range . Однако он моделирует borrowed_range , constant_range и sized_range , когда базовое представление V моделирует соответствующие концепции.

Содержание

Члены данных

Участник Описание
V base_ (приватный) базовое представление
( объект-член только для демонстрации* )

Функции-члены

создает to_input_view
(public member function)
возвращает копию базового (адаптированного) представления
(public member function)
возвращает итератор на начало
(public member function)
возвращает итератор или страж на конец
(public member function)
возвращает количество элементов. Предоставляется только если базовый (адаптированный) диапазон удовлетворяет sized_range .
(public member function)
Наследуется от std::ranges::view_interface
возвращает, является ли производное представление пустым, предоставляется только если оно удовлетворяет sized_range или forward_range
(public member function of std::ranges::view_interface<D> )
(C++23)
возвращает константный итератор на начало диапазона
(public member function of std::ranges::view_interface<D> )
(C++23)
возвращает страж для константного итератора диапазона
(public member function of std::ranges::view_interface<D> )
возвращает, является ли производное представление непустым, предоставляется только если ranges::empty применимо к нему
(public member function of std::ranges::view_interface<D> )
получает адрес данных производного представления, предоставляется только если его тип итератора удовлетворяет contiguous_iterator
(public member function of std::ranges::view_interface<D> )
возвращает первый элемент в производном представлении, предоставляется если оно удовлетворяет forward_range
(public member function of std::ranges::view_interface<D> )
возвращает последний элемент в производном представлении, предоставляется только если оно удовлетворяет bidirectional_range и common_range
(public member function of std::ranges::view_interface<D> )
возвращает n элемент в производном представлении, предоставляется только если оно удовлетворяет random_access_range
(public member function of std::ranges::view_interface<D> )

std::ranges::to_input_view:: to_input_view

to_input_view ( ) requires std:: default_initializable < V > = default ;
(1) (since C++26)
constexpr explicit to_input_view ( V base ) ;
(2) (since C++26)
1) Инициализирует значением base_ через его инициализатор по умолчанию ( = V ( ) ).
2) Инициализирует base_ с помощью std :: move ( base ) .

Параметры

base - представление

std::ranges::to_input_view:: base

constexpr V base ( ) const & requires std:: copy_constructible < V > ;
(1) (since C++26)
constexpr V base ( ) && ;
(2) (since C++26)
1) Копирует результат из базового представления. Эквивалентно return base_ ; .
2) Перемещает результат из базового представления. Эквивалентно return std :: move ( base_ ) ; .

std::ranges::to_input_view:: begin

constexpr auto begin ( ) requires ( ! __simple_view < V > ) ;
(1) (начиная с C++26)
constexpr auto begin ( ) const requires ranges:: range < const V > ;
(2) (начиная с C++26)
1) Эквивалентно return /*iterator*/ < false > ( ranges:: begin ( base_ ) ) ;
2) Эквивалентно return /*iterator*/ < true > ( ranges:: begin ( base_ ) ) ;

std::ranges::to_input_view:: end

constexpr auto end ( ) requires ( ! __simple_view < V > ) ;
(1) (начиная с C++26)
constexpr auto end ( ) const requires ranges:: range < const V > ;
(2) (начиная с C++26)
1,2) Эквивалентно return ranges:: end ( base_ ) ;

std::ranges::to_input_view:: size

constexpr auto size ( ) requires ranges:: sized_range < V > ;
(1) (начиная с C++26)
constexpr auto size ( ) const requires ranges:: sized_range < const V > ;
(2) (начиная с C++26)
1,2) Эквивалентно return ranges:: size ( base_ ) ;

Руководства по выводу типа

template < class R >
to_input_view ( R && ) - > to_input_view < views:: all_t < R >> ;
(начиная с C++26)

Вложенные классы

тип итератора
( демонстрационный шаблон класса-члена* )

Вспомогательные шаблоны

template < class T >

constexpr bool enable_borrowed_range < std :: ranges :: to_input_view < T >> =

ranges:: enable_borrowed_range < T > ;
(начиная с C++26)

Эта специализация std :: ranges:: enable_borrowed_range позволяет to_input_view удовлетворять требованиям borrowed_range , когда базовое представление удовлетворяет им.

Примечания

to_input_view может быть полезен для избежания издержек, необходимых для обеспечения поддержки операций, требуемых для большей силы итератора.

Макрос тестирования возможностей Значение Стандарт Функция
__cpp_lib_ranges_to_input 202502L (C++26) std::ranges::to_input_view

Пример

Смотрите также

определяет диапазон, тип итератора которого удовлетворяет input_iterator
(концепт)
преобразует view в common_range
(шаблон класса) (объект адаптера диапазона)