std::ranges::approximately_sized_range
From cppreference.com
Defined in header <ranges>
|
||
template< class T > concept approximately_sized_range = ranges::range<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.
Contents |
[edit] 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 t in 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 of ranges::begin(t) (in other words, a single-pass approximately sized range may support a call toreserve_hint
only before the first call tobegin
, but a forward range must support size at all times).
[edit] Notes
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_ranges_reserve_hint |
202502L |
(C++26) | ranges::approximately_sized_range |
[edit] Example
This section is incomplete Reason: no example |
[edit] See also
(C++20) |
specifies that a range knows its size in constant time (concept) |