Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::ranges::transform_view<V,F>::transform_view

      From cppreference.com
      <cpp‎ |ranges‎ |transform view
       
       
      Ranges library
      Range adaptors
       
      std::ranges::transform_view
      Member functions
      transform_view::transform_view
      Deduction guides
      Iterator
      Sentinel
       
      transform_view() requiresstd::default_initializable<V>&&
                               std::default_initializable<F>=default;
      (1)(since C++20)
      constexprexplicit transform_view( V base, F fun);
      (2)(since C++20)

      Constructs atransform_view.

      1) Default constructor.Value-initializes the underlying viewbase_ and the transformation functionfun_.
      2) Move constructs the underlying viewbase_ frombase and the transformation functionfun_ fromfun.

      [edit]Parameters

      base - view
      fun - transformation function

      [edit]Example

      Demonstratesπ approximation using serial expansion of arc tangent of1:atan(1) = π/4 ≈ 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...

      Run this code
      #include <algorithm>#include <functional>#include <iomanip>#include <iostream>#include <numeric>#include <ranges> int main(){std::cout<<std::setprecision(15)<<std::fixed;auto atan1term{std::ranges::views::transform([](int n){return((n%2)?-1:1)*1.0/(2* n+1);})};for(constint iterations:{1,2,3,4,5,10,100,1000,1'000'000}){auto seq{std::ranges::views::iota(0, iterations) bitor atan1term};constdouble accum{*std::ranges::fold_left_first(seq,std::plus{})};std::cout<<"π ≈ "<<4* accum<<" (iterations: "<< iterations<<")\n";}std::cout<<"π ≈ "<<std::numbers::pi<<" (std::numbers::pi)\n";}

      Possible output:

      π ≈ 4.000000000000000 (iterations: 1)π ≈ 2.666666666666667 (iterations: 2)π ≈ 3.466666666666667 (iterations: 3)π ≈ 2.895238095238096 (iterations: 4)π ≈ 3.339682539682540 (iterations: 5)π ≈ 3.041839618929403 (iterations: 10)π ≈ 3.131592903558554 (iterations: 100)π ≈ 3.140592653839794 (iterations: 1000)π ≈ 3.141591653589774 (iterations: 1000000)π ≈ 3.141592653589793 (std::numbers::pi)

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 3714
      (P2711R1)
      C++20the multi-parameter constructor was not explicitmade explicit
      P2325R3C++20ifF is notdefault_initializable, the default constructor
      constructs atransform_view which does not contain anF
      thetransform_view is also
      notdefault_initializable
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/transform_view/transform_view&oldid=181337"

      [8]ページ先頭

      ©2009-2025 Movatter.jp