Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::ranges::views::stride,std::ranges::stride_view

      From cppreference.com
      <cpp‎ |ranges
       
       
      Ranges library
      Range adaptors
       
      std::ranges::stride_view
      Member functions
      Deduction guides
      Iterator
      Member functions
      Non-member functions
       
      Defined in header<ranges>
      template<ranges::input_range V>

          requiresranges::view<V>
      class stride_view

         :publicranges::view_interface<stride_view<V>>
      (1)(since C++23)
      namespace views{

         inlineconstexpr/* unspecified */ stride=/* unspecified */;

      }
      (2)(since C++23)
      Call signature
      template<ranges::viewable_range R>
      constexprranges::viewauto 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 aview and a numbern and produces a view, that consists of elements of the original view by advancing overn elements at a time. This means that eachmth element of the produced view is(n * i)th element of the original view, for some non-negative indexi.The elements of the original view, whose “index” is not a multiple ofn, are not present in the produced view.
      LetS be the size of the original view. Then the size of produced view is:
      • (S/ n)+(S% n?1:0), ifS>= n; otherwise,
      • 1, ifS>0; otherwise,
      • 0, and the resulting view is empty.
      2) The nameviews::stride denotes aRangeAdaptorObject. Given subexpressionse andn, the expressionviews::stride(e, n) isexpression-equivalent tostride_view(e, n).
      Then must be greater than0, otherwise the behavior is undefined.

      stride_view always modelsinput_range, and modelsforward_range,bidirectional_range,random_access_range, and/orsized_range, if adaptedview typeV models the corresponding concept.stride_view<V> modelscommon_range whenever the underlying viewV does.

      Contents

      [edit]Data members

      Member Description
      Vbase_ 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

      constructs astride_view
      (public member function)[edit]
      (C++23)
      returns the stored stride value
      (public member function)
      returns a copy of the underlying (adapted) view
      (public member function)[edit]
      returns an iterator to the beginning
      (public member function)[edit]
      returns an iterator or a sentinel to the end
      (public member function)[edit]
      returns the number of elements, provided only if the underlying (adapted) range satisfiessized_range
      (public member function)[edit]
      returns the approximate size of the resultingapproximately_sized_range
      (public member function)[edit]
      Inherited fromstd::ranges::view_interface
      returns whether the derived view is empty, provided only if it satisfiessized_range orforward_range
      (public member function ofstd::ranges::view_interface<D>)[edit]
      (C++23)
      returns a constant iterator to the beginning of the range
      (public member function ofstd::ranges::view_interface<D>)[edit]
      (C++23)
      returns a sentinel for the constant iterator of the range
      (public member function ofstd::ranges::view_interface<D>)[edit]
      returns whether the derived view is not empty, provided only ifranges::empty is applicable to it
      (public member function ofstd::ranges::view_interface<D>)[edit]
      returns the first element in the derived view, provided if it satisfiesforward_range
      (public member function ofstd::ranges::view_interface<D>)[edit]
      returns the last element in the derived view, provided only if it satisfiesbidirectional_range andcommon_range
      (public member function ofstd::ranges::view_interface<D>)[edit]
      returns thenth element in the derived view, provided only if it satisfiesrandom_access_range
      (public member function ofstd::ranges::view_interface<D>)[edit]

      [edit]Deduction guides

      [edit]Nested classes

      (C++23)
      the iterator type
      (exposition-only member class template*)

      [edit]Helper templates

      template<class V>

      constexprboolranges::enable_borrowed_range<stride_view<V>>=

         ranges::enable_borrowed_range<V>;
      (since C++23)

      This specialization ofranges::enable_borrowed_range makesstride_view satisfyborrowed_range when the underlying view satisfies it.

      [edit]Notes

      Feature-test macroValueStdFeature
      __cpp_lib_ranges_stride202207L(C++23)std::ranges::stride_view

      [edit]Example

      Run this code
      #include <algorithm>#include <iostream>#include <ranges>#include <string_view>usingnamespace std::literals; void print(std::ranges::viewable_rangeauto&& v,std::string_view separator=" "){for(autoconst& x: v)std::cout<< x<< separator;std::cout<<'\n';} int main(){    print(std::views::iota(1,13)| std::views::stride(3));    print(std::views::iota(1,13)| std::views::stride(3)| std::views::reverse);    print(std::views::iota(1,13)| std::views::reverse| std::views::stride(3));     print("0x0!133713337*x//42/A$@"sv| std::views::stride(0B11)|          std::views::transform([](char O)->char{return0100| O;}),"");}

      Output:

      1 4 7 1010 7 4 112 9 6 3password

      [edit]References

      • C++23 standard (ISO/IEC 14882:2024):
      • 26.7.31 Stride view [range.stride]

      [edit]See also

      aview whose Mth element is aview over the Mth through (M + N - 1)th elements of anotherview
      (class template)(range adaptor object)[edit]
      a range ofviews that areN-sized non-overlapping successive chunks of the elements of anotherview
      (class template)(range adaptor object)[edit]
      aview consisting of tuples of references to adjacent elements of the adapted view
      (class template)(range adaptor object)[edit]
      aview that consists of the elements of arange that satisfies a predicate
      (class template)(range adaptor object)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/stride_view&oldid=182456"

      [8]ページ先頭

      ©2009-2025 Movatter.jp