std::ranges::approximately_sized_range
С ru.cppreference.net
| Определён в заголовке <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 |
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++20)
|
определяет, что диапазон знает свой размер за постоянное время
(концепт) |