Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::ranges::views::transform,std::ranges::transform_view

      From cppreference.com
      <cpp‎ |ranges
       
       
      Ranges library
      Range adaptors
       
      std::ranges::transform_view
      Member functions
      Deduction guides
      Iterator
      Sentinel
       
      Defined in header<ranges>
      (1)
      template<ranges::input_range V,

               std::copy_constructible F>
          requiresranges::view<V>&&
                   std::is_object_v<F>&&
                   std::regular_invocable<F&,ranges::range_reference_t<V>>&&
                   /* invoke_result_t<F&, range_reference_t<V>>& is a valid type */
      class transform_view

         :publicranges::view_interface<transform_view<V, F>>
      (since C++20)
      (until C++23)
      template<ranges::input_range V,

               std::move_constructible F>
          requiresranges::view<V>&&
                   std::is_object_v<F>&&
                   std::regular_invocable<F&,ranges::range_reference_t<V>>&&
                   /* invoke_result_t<F&, range_reference_t<V>>& is a valid type */
      class transform_view

         :publicranges::view_interface<transform_view<V, F>>
      (since C++23)
      namespace views{

         inlineconstexpr/*unspecified*/ transform=/*unspecified*/;

      }
      (2)(since C++20)
      Call signature
      template<ranges::viewable_range R,class F>

          requires/* see below */

      constexprranges::viewauto transform( R&& r, F&& fun);
      (since C++20)
      template<class F>
      constexpr/*range adaptor closure*/ transform( F&& fun);
      (since C++20)
      1) A range adaptor that representsview of an underlying sequence after applying a transformation function to each element.
      2)RangeAdaptorObject. The expressionviews::transform(e, f) isexpression-equivalent totransform_view(e, f) for any suitable subexpressionse andf.

      transform_view models the conceptsrandom_access_range,bidirectional_range,forward_range,input_range,common_range, andsized_range when the underlying viewV models respective concepts.

      Contents

      [edit]Data members

      Member Description
      Vbase_(private) the underlying view
      (exposition-only member object*)
      copyable-box<F>(until C++23)movable-box<F>(since C++23)fun_(private) the underlying function object
      (exposition-only member object*)

      [edit]Member functions

      constructs atransform_view
      (public member function)[edit]
      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

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

      [edit]Example

      Run this code
      #include <algorithm>#include <cstdio>#include <iterator>#include <ranges>#include <string> char rot13a(constchar x,constchar a){return a+(x- a+13)%26;} char rot13(constchar x){if('Z'>= x and x>='A')return rot13a(x,'A'); if('z'>= x and x>='a')return rot13a(x,'a'); return x;} int main(){auto show=[](constunsignedchar x){std::putchar(x);}; std::string in{"cppreference.com\n"};    std::ranges::for_each(in, show);    std::ranges::for_each(in| std::views::transform(rot13), show); std::string out;    std::ranges::copy(std::views::transform(in, rot13),std::back_inserter(out));    std::ranges::for_each(out, show);    std::ranges::for_each(out| std::views::transform(rot13), show);}

      Output:

      cppreference.compccersrerapr.pbzpccersrerapr.pbzcppreference.com

      [edit]See also

      applies a function to a range of elements
      (algorithm function object)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/transform_view&oldid=182384"

      [8]ページ先頭

      ©2009-2025 Movatter.jp