std::ranges:: approximately_sized_range
|
||||||||||||||||||||||
| Range primitives | |||||||
|
|||||||
| Range concepts | |||||||||||||||||||
|
|||||||||||||||||||
| Range factories | |||||||||
|
|||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||
| Helper items | |||||||||||||||||
|
|
||||||||||||||||
|
Определено в заголовочном файле
<ranges>
|
||
|
template
<
class
T
>
concept approximately_sized_range
=
ranges::
range
<
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 |
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++20)
|
определяет, что диапазон знает свой размер за постоянное время
(концепт) |