C++:简单计算器与排序

两个小程序

包含两个小程序,一个对数字进行计算的(也可以对其他可用类型),第二个是排序的.

C++.
image-2210

计算的小程序

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;
}