两个小程序
包含两个小程序,一个对数字进行计算的(也可以对其他可用类型),第二个是排序的.
计算的小程序
// Example program
#include
#include
#include
using namespace std;
//加减乘除运算.
int main()
{
/*
template
T operator() (const T& x, const T& y) const {return x+y;}
typedef T first_argument_type;
typedef T second_argument_type;
typedef T result_type;
};
例如:上面是plus的原型,可以看出其中重载了加法运算.(其他的类似)
更多可以参考:http://www.cplusplus.com/reference/functional/plus/ [应查看c++ 11的示例]
*/
plus
minus
multiplies
divides
negate
modulus
///////////////////////////////
cout << "add:" << age(10,20) << endl;
cout << "minus:" << gre(100,50) << endl;
cout << "mulitplies:" << nums(50,100) << endl;
cout << "divides:" << ds(100,2) << endl;
cout << "negate:" << ne(100) << endl;
cout << "modulus:" << modu(100,10) << endl;
return 0;
}
逆序排序
下面的程序其实使用了上面程序中的匿名negate对象(negate会倒置传入的值).
negate原型如下:
template
T operator() (const T& x) const {return -x;}
typedef T argument_type;
typedef T result_type;
};
//更多可参考:http://www.cplusplus.com/reference/functional/negate/
程序如下:
// Example program
#include
#include
#include
#include
using namespace std;
//逆序排列vector中的元素
int main()
{
vector
sort(vec.begin(),vec.end(),greater
for_each(vec.begin(),vec.end(),[](const int &is){cout << is << " " ;});
cout << endl;
return 0;
}