两个小程序
包含两个小程序,一个对数字进行计算的(也可以对其他可用类型),第二个是排序的.
计算的小程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | // Example program #include <iostream> #include <string> #include <functional> using namespace std; //加减乘除运算. int main() { /* template <class T> struct plus { 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<int> age; minus<int> gre; multiplies<int> nums; divides<int> ds; negate<int> ne; modulus<int> modu; /////////////////////////////// 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原型如下:
1 2 3 4 5 6 | template <class T> struct negate { T operator() (const T& x) const {return -x;} typedef T argument_type; typedef T result_type; }; //更多可参考:http://www.cplusplus.com/reference/functional/negate/ |
程序如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // Example program #include<iostream> #include<algorithm> #include<functional> #include<vector> using namespace std; //逆序排列vector中的元素 int main() { vector<int> vec={5,20,70,6,100,658,50,3,1558,1,85217,0}; sort(vec.begin(),vec.end(),greater<int>()); for_each(vec.begin(),vec.end(),[](const int &is){cout << is << " " ;}); cout << endl; return 0; } |