std::ranges::view::counted (3) Linux Manual Page
std::ranges::view::counted – std::ranges::view::counted
Synopsis
namespace view {
inline constexpr /*unspecified*/ counted = /*unspecified*/; (since C++20)
}
A counted view presents a View of the elements of the counted range [i, n) for some iterator i and non-negative integer n.
A counted range [i, n) is the n elements starting with the element pointed to by i and up to but not including the element, if any, pointed to by the result of n applications of ++i.
If n == 0, the counted range is valid and empty. Otherwise, the counted range is only valid if n is positive, i is dereferenceable, and [++i, –n) is a valid counted range.
Formally, if E and F are expressions, and T is the type std::decay_t<decltype((E))>, then
if T
models RandomAccessIterator, view::counted(E, F) is expression - equivalent to ranges::subrange{E, E + static_cast<std::iter_difference_t<T>>(F)} otherwise view::counted(E, F) is expression - equivalent to ranges::subrange
{
std::counted_iterator{E, F}, std::default_sentinel
}
Example
// Run this code
#include <ranges>
#include <iostream>
int main()
{
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (int i : std::view::counted(a, 3))
std::cout << i << ' ';
}
Output:
See also
subrange (class template)
counted_iterator iterator adaptor that tracks the distance to the end of the range
(C++20)
