Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::ranges::views::zip_transform,std::ranges::zip_transform_view

      From cppreference.com
      <cpp‎ |ranges
       
       
      Ranges library
      Range adaptors
       
      std::ranges::zip_transform_view
      Member functions
      Deduction guides
      Iterator
      Member functions
      Non-member functions
      Sentinel
      Member functions
      Non-member functions
       
      Defined in header<ranges>
      template<std::move_constructible F,ranges::input_range...Views>

          requires(ranges::view<Views>&& ...)&&(sizeof...(Views)>0)&&
                   std::is_object_v<F>&&std::regular_invocable<
                        F&,ranges::range_reference_t<Views>...>&&
                   /*can-reference*/<std::invoke_result_t<
                        F&,ranges::range_reference_t<Views>...>>
      class zip_transform_view

           :publicranges::view_interface<zip_transform_view<F, Views...>>
      (1)(since C++23)
      namespace views{

         inlineconstexpr/*unspecified*/ zip_transform=/*unspecified*/;

      }
      (2)(since C++23)
      Call signature
      template<class F,ranges::viewable_range...Rs>

          requires/* see below */

      constexprauto zip_transform( F&& f, Rs&&...rs);
      (since C++23)
      1)zip_transform_view is a range adaptor that takes an invocable object and one or moreviews, and produces aview whoseith element is the result of applying the invocable object to theith elements of all views.
      A typeT models the exposition-only concept/*can-reference*/ if and only ifT& is a valid type.
      2)views::zip_transform is a customization point object.

      When calling with one argumentf, letFD bestd::decay_t<decltype(f)>, if:

      thenviews::zip_transform(f) isexpression-equivalent to((void)f,auto(views::empty<std::decay_t<std::invoke_result_t<FD&>>>)). Otherwise, the call toviews::zip_transform is ill-formed.

      When calling with more than one argumentsf andrs...,views::zip_transform(f, rs...) isexpression-equivalent toranges::zip_transform_view(f, rs...).

      zip_transform_view models the conceptsrandom_access_range,bidirectional_range,forward_range,input_range,common_range, andsized_range when the underlyingranges::zip_view<Views...> models respective concepts.

      Contents

      Customization point objects

      The nameviews::zip_transform denotes acustomization point object, which is a constfunction object of aliteralsemiregular class type. SeeCustomizationPointObject for details.

      [edit]Member functions

      constructs azip_transform_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 each underlying (adapted) range satisfiessized_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]Member types

      Member type Definition
      InnerView(private)ranges::zip_view<Views...>.
      (exposition-only member type*)
      ziperator(private)
      zentinel(private)

      [edit]Data members

      Member object Definition
      zip_(private) An underlying view object of typeInnerView
      (exposition-only member object*)
      fun_(private) A wrapped invocable object of typemovable-box<F>
      (exposition-only member object*)

      [edit]Nested classes

      the iterator type
      (exposition-only member class template*)
      the sentinel type used when the underlyingzip_view is not acommon_range
      (exposition-only member class template*)

      [edit]Notes

      Feature-test macroValueStdFeature
      __cpp_lib_ranges_zip202110L(C++23)ranges::zip_view,
      std::ranges::zip_transform_view,
      ranges::adjacent_view,
      ranges::adjacent_transform_view

      [edit]Example

      Run this code
      #include <array>#include <iostream>#include <list>#include <ranges>#include <vector> void print(autoconst rem,autoconst& r){std::cout<< rem<<'{';for(char o[]{0,' ',0};autoconst& e: r)std::cout<< o<< e,*o=',';std::cout<<"}\n";} int main(){auto v1=std::vector<float>{1,2,3};auto v2=std::list<short>{1,2,3,4};auto v3=std::to_array({1,2,3,4,5}); auto add=[](auto a,auto b,auto c){return a+ b+ c;}; auto sum= std::views::zip_transform(add, v1, v2, v3);     print("v1:  ", v1);    print("v2:  ", v2);    print("v3:  ", v3);    print("sum: ", sum);}

      Output:

      v1:  {1, 2, 3}v2:  {1, 2, 3, 4}v3:  {1, 2, 3, 4, 5}sum: {3, 6, 9}

      [edit]See also

      aview consisting of tuples of references to corresponding elements of the adapted views
      (class template)(customization point object)[edit]
      aview of a sequence that applies a transformation function to each element
      (class template)(range adaptor object)[edit]
      takes aview consisting oftuple-like values and a number N and produces aview of Nth element of each tuple
      (class template)(range adaptor object)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/zip_transform_view&oldid=172616"

      [8]ページ先頭

      ©2009-2025 Movatter.jp