Namespaces
Variants

std::ranges:: approximately_sized_range

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

concept approximately_sized_range = ranges:: range < T > &&
requires ( T & t ) {
ranges :: reserve_hint ( t ) ;

} ;
(начиная с C++26)

Концепт approximately_sized_range определяет требования к типу range , который может оценить свой размер за постоянное время с помощью функции reserve_hint .

Содержание

Семантические требования

Для lvalue t типа std:: remove_reference_t < T > , T моделирует approximately_sized_range только если

  • ranges :: reserve_hint ( t )
  • имеет амортизированную постоянную временную сложность,
  • не изменяет значение t способом, наблюдаемым для сохраняющих равенство выражений, и
  • имеет значение, которое неотрицательно и представимо в ranges:: range_difference_t < T > , и
  • если ranges:: iterator_t < T > моделирует forward_iterator , ranges :: reserve_hint ( t ) является корректно определённым независимо от вычисления ranges:: begin ( t ) (другими словами, однопроходный диапазон с приблизительным размером может поддерживать вызов reserve_hint только до первого вызова begin , но прямой диапазон должен поддерживать размер в любое время).

Примечания

Макрос тестирования возможностей Значение Стандарт Возможность
__cpp_lib_ranges_reserve_hint 202502L (C++26) ranges::approximately_sized_range

Пример

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

определяет, что диапазон знает свой размер за постоянное время
(концепт)