Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::binder1st,std::binder2nd

      From cppreference.com
      <cpp‎ |utility‎ |functional
       
       
      Utilities library
       
      Function objects
      Function invocation
      (C++17)(C++23)
      Identity function object
      (C++20)
      Old binders and adaptors
      (until C++17*)
      (until C++17*)
      (until C++17*)
      (until C++17*)  
      (until C++17*)
      (until C++17*)(until C++17*)(until C++17*)(until C++17*)
      (until C++20*)
      (until C++20*)
      binder1stbinder2nd
      (until C++17*)(until C++17*)
      (until C++17*)(until C++17*)

      (until C++17*)
      (until C++17*)(until C++17*)(until C++17*)(until C++17*)
      (until C++20*)
      (until C++20*)
       
      Defined in header<functional>
      template<class Fn>

      class binder1st
         :publicstd::unary_function<typename Fn::second_argument_type,
                                       typename Fn::result_type>{
      protected:
          Fn op;
         typename Fn::first_argument_type value;
      public:
          binder1st(const Fn& fn,
                     consttypename Fn::first_argument_type& value);

         typename Fn::result_type
              operator()(consttypename Fn::second_argument_type& x)const;

         typename Fn::result_type
              operator()(typename Fn::second_argument_type& x)const;

      };
      (1)(deprecated in C++11)
      (removed in C++17)
      template<class Fn>

      class binder2nd
         :publicstd::unary_function<typename Fn::first_argument_type,
                                       typename Fn::result_type>{
      protected:
          Fn op;
         typename Fn::second_argument_type value;
      public:
          binder2nd(const Fn& fn,
                     consttypename Fn::second_argument_type& value);

         typename Fn::result_type
              operator()(consttypename Fn::first_argument_type& x)const;

         typename Fn::result_type
              operator()(typename Fn::first_argument_type& x)const;

      };
      (2)(deprecated in C++11)
      (removed in C++17)

      A function object that binds an argument to a binary function.

      The value of the parameter is passed to the object at the construction time and stored within the object. Whenever the function object is invoked thoughoperator(), the stored value is passed as one of the arguments, the other argument is passed as an argument ofoperator(). The resulting function object is a unary function.

      1) Binds the first parameter to the valuevalue given at the construction of the object.
      2) Binds the second parameter to the valuevalue given at the construction of the object.

      [edit]Example

      Run this code
      #include <cmath>#include <functional>#include <iostream>#include <vector> constdouble pi=std::acos(-1);// use std::numbers::pi in C++20 int main(){// deprecated in C++11, removed in C++17auto f1=std::bind1st(std::multiplies<double>(), pi/180.0); // C++11 replacementauto f2=[](double a){return a* pi/180.0;}; for(double n:{0,30,45,60,90,180})std::cout<< n<<\t"<<std::fixed<<"= "<< f1(n)<<" rad (using binder)\t= "<< f2(n)<<" rad (using lambda)\n"<<std::defaultfloat;}

      Output:

      0°= 0.000000 rad (using binder)= 0.000000 rad (using lambda)30°= 0.523599 rad (using binder)= 0.523599 rad (using lambda)45°= 0.785398 rad (using binder)= 0.785398 rad (using lambda)60°= 1.047198 rad (using binder)= 1.047198 rad (using lambda)90°= 1.570796 rad (using binder)= 1.570796 rad (using lambda)180°= 3.141593 rad (using binder)= 3.141593 rad (using lambda)

      [edit]Defect reports

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

      DRApplied toBehavior as publishedCorrect behavior
      LWG 109C++98operator() could not modify to argument passed to itadded overloads to handle this

      [edit]See also

      (deprecated in C++11)(removed in C++17)
      binds one argument to a binary function
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/functional/binder12&oldid=161375"

      [8]ページ先頭

      ©2009-2025 Movatter.jp