Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::bind1st,std::bind2nd

      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*)
      (until C++17*)(until C++17*)
      bind1stbind2nd
      (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 F,class T>
      std::binder1st<F> bind1st(const F& f,const T& x);
      (1)(deprecated in C++11)
      (removed in C++17)
      template<class F,class T>
      std::binder2nd<F> bind2nd(const F& f,const T& x);
      (2)(deprecated in C++11)
      (removed in C++17)

      Binds a given argumentx to a first or second parameter of the given binary function objectf. That is, storesx within the resulting wrapper, which, if called, passesx as the first or the second parameter off.

      1) Binds the first argument off tox. Effectively callsstd::binder1st<F>(f,typename F::first_argument_type(x)).
      2) Binds the second argument off tox. Effectively callsstd::binder2nd<F>(f,typename F::second_argument_type(x)).

      Contents

      [edit]Parameters

      f - pointer to a function to bind an argument to
      x - argument to bind tof

      [edit]Return value

      A function object wrappingf andx.

      [edit]Exceptions

      May throw implementation-defined exceptions.

      [edit]Example

      Run this code
      #include <algorithm>#include <cmath>#include <cstddef>#include <functional>#include <iomanip>#include <iostream>#include <vector> int main(){std::vector<double> a={0,30,45,60,90,180};std::vector<double> r(a.size());constdouble pi=std::acos(-1);// since C++20 use std::numbers::pi std::transform(a.begin(), a.end(), r.begin(),        std::bind1st(std::multiplies<double>(), pi/180.0));//  an equivalent lambda is: [pi](double a) { return a * pi / 180.0; }); for(std::size_t n=0; n< a.size();++n)std::cout<<std::setw(3)<< a[n]<<"° = "<<std::fixed<< r[n]<<" rad\n"<<std::defaultfloat;}

      Output:

        0° = 0.000000 rad 30° = 0.523599 rad 45° = 0.785398 rad 60° = 1.047198 rad 90° = 1.570796 rad180° = 3.141593 rad

      [edit]See also

      (deprecated in C++11)(removed in C++17)
      function object holding a binary function and one of its arguments
      (class template)[edit]
      (C++20)(C++23)
      bind a variable number of arguments, in order, to a function object
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/functional/bind12&oldid=152115"

      [8]ページ先頭

      ©2009-2025 Movatter.jp