std::ranges::views::stride, std::ranges::stride_view - cppreference.com (original) (raw)

Defined in header
template< ranges::input_range V > requires ranges::view<V> class stride_view : public ranges::view_interface<stride_view<V>> (1) (since C++23)
namespace views { inline constexpr /* unspecified */ stride = /* unspecified */; } (2) (since C++23)
Call signature
template< ranges::viewable_range R > constexpr ranges::view auto stride( R&& r, ranges::range_difference_t<R> n ); (since C++23)
template< class DifferenceType > constexpr /*range adaptor closure*/ stride( DifferenceType&& n ); (since C++23)
Helper templates
  1. stride_view is a range adaptor that takes a view and a number _n_ and produces a view, that consists of elements of the original view by advancing over n elements at a time. This means that each _m_th element of the produced view is _(n * i)_th element of the original view, for some non-negative index _i_. The elements of the original view, whose “index” is not a multiple of _n_, are not present in the produced view.

Let _S_ be the size of the original view. Then the size of produced view is:

  1. The name views::stride denotes a RangeAdaptorObject. Given subexpressions e and n, the expression views::stride(e, n) is expression-equivalent to stride_view(e, n).

The n must be greater than ​0​, otherwise the behavior is undefined.

stride_view always models input_range, and models forward_range, bidirectional_range, random_access_range, and/or sized_range, if adapted view type V models the corresponding concept.stride_view<V> models common_range whenever the underlying view V does.

Contents

[edit] Data members

Member Description
V base_ the underlying view(exposition-only member object*)
ranges::range_difference_t<V> stride_ the size object (the “stride”)(exposition-only member object*)

[edit] Member functions

(constructor) constructs a stride_view (public member function) [edit]
stride(C++23) returns the stored stride value (public member function)
base returns a copy of the underlying (adapted) view (public member function) [edit]
begin returns an iterator to the beginning (public member function) [edit]
end returns an iterator or a sentinel to the end (public member function) [edit]
size returns the number of elements, provided only if the underlying (adapted) range satisfies sized_range (public member function) [edit]
reserve_hint(C++26) returns the approximate size of the resulting approximately_sized_range (public member function) [edit]
Inherited from std::ranges::view_interface
empty returns whether the derived view is empty, provided only if it satisfies sized_range or forward_range (public member function of std::ranges::view_interface) [edit]
cbegin(C++23) returns a constant iterator to the beginning of the range (public member function of std::ranges::view_interface) [edit]
cend(C++23) returns a sentinel for the constant iterator of the range (public member function of std::ranges::view_interface) [edit]
operator bool returns whether the derived view is not empty, provided only if ranges::empty is applicable to it (public member function of std::ranges::view_interface) [edit]
front returns the first element in the derived view, provided if it satisfies forward_range (public member function of std::ranges::view_interface) [edit]
back returns the last element in the derived view, provided only if it satisfies bidirectional_range and common_range (public member function of std::ranges::view_interface) [edit]
operator[] returns the nth element in the derived view, provided only if it satisfies random_access_range (public member function of std::ranges::view_interface) [edit]

[edit] Deduction guides

[edit] Nested classes

| | the iterator type(exposition-only member class template*) | | ------------------------------------------------------------- |

[edit] Helper templates

This specialization of ranges::enable_borrowed_range makes stride_view satisfy borrowed_range when the underlying view satisfies it.

[edit] Notes

Feature-test macro Value Std Feature
__cpp_lib_ranges_stride 202207L (C++23) std::ranges::stride_view

[edit] Example

Output:

1 4 7 10 10 7 4 1 12 9 6 3 password

[edit] References

[edit] See also