bind2nd 產生binder2nd函式介面卡例項
阿新 • • 發佈:2018-12-09
以find_if演算法為例。
功能:找到陣列中第一個大於40的元素。
code:
// find_if_bind2nd.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include<functional> //用了greater<int>() #include<iostream> #include<vector> #include<algorithm> using namespace std; greater<int>g; //bool greater40(int x) //{ // return g(x,40); //}; int _tmain(int argc, _TCHAR* argv[]) { int intArr[]={30,90,10,40,70,50,20,80}; const int N = sizeof(intArr)/sizeof(int); vector<int>a(intArr,intArr + N); //利用陣列給vector賦予不同的初值 vector<int>::iterator p = find_if(a.begin(),a.end(),bind2nd(greater<int>(),40)); if(p == a.end()) { cout<<"no element greater than 40 "<<endl; } else { cout<<"first element greater than 40 is: "<<*p<<endl; } int m; cin>>m; return 0; }
執行:
分析:
bind2nd返回binder2nd函式物件,
它的函式運算體呼叫greater(x,40),即實現了將40繫結到greater的第二個引數中。
隱式使用了自己的介面卡binder2nd。