std::ranges::approximately_sized_range
Defined in header <ranges> | ||
|---|---|---|
template< class T >
concept approximately_sized_range = ranges::range<T> &&
requires(T& t) {
ranges::reserve_hint(t);
};
| (since C++26) |
The approximately_sized_range concept specifies the requirements of a range type that can estimate its size in constant time with the reserve_hint function.
Semantic requirements
Given an lvalue t of type std::remove_reference_t<T>, T models approximately_sized_range only if
ranges::reserve_hint(t)- has amortized constant-time complexity,
- does not alter the value of
tin a manner observable to equality-preserving expressions, and - has a value that is not negative and is representable in ranges::range_difference_t<T>, and
- if ranges::iterator_t<T> models
forward_iterator,ranges::reserve_hint(t)is well-defined regardless of the evaluation ofranges::begin(t)(in other words, a single-pass approximately sized range may support a call toreserve_hintonly before the first call tobegin, but a forward range must support size at all times).
Notes
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
__cpp_lib_ranges_reserve_hint | 202502L | (C++26) |
ranges::approximately_sized_range |
Example
See also
|
(C++20) | specifies that a range knows its size in constant time (concept) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/ranges/approximately_sized_range