c++11新性能测试3

#include<iostream>
#include<functional>
using namespace std;
using namespace std::placeholders;
//函数
int half(int x) {return x/2;}

//仿函数
struct third_t {
    int operator()(int x) {return x/3;}
};

//结构体
struct MyValue {
   int value;
   int fifth() {return value / 5;}
};

double my_divide (double x, double y) {return x/y;}

int main()
{
    function<int(int)> fn1 = half;
    function<int(int)> fn2 = ½
    function<int(int)> fn3 = third_t();
    function<int(int)> fn4 = [](int x){return x /4;}; //lambda
    function<int(int)> fn5 = negate<int>();
     std::cout << "fn1(60): " << fn1(60) << '\n';
  std::cout << "fn2(60): " << fn2(60) << '\n';
  std::cout << "fn3(60): " << fn3(60) << '\n';
  std::cout << "fn4(60): " << fn4(60) << '\n';
  std::cout << "fn5(60): " << fn5(60) << '\n';
  cout << "(*fn1.target<int(*)(int)>())(100) = "  << (*fn1.target<int(*)(int)>())(100)<< endl;
  //target() 成员函数的作用是:Returns a pointer to the callable object stored in the function object.



  std::function<int(MyValue&)> value = &MyValue::value;  // 指向数据成员的指针
  std::function<int(MyValue&)> fifth = &MyValue::fifth;  // 指向成员函数的指针

  MyValue sixty {60};

  std::cout << "value(sixty): " << value(sixty) << '\n';
  std::cout << "fifth(sixty): " << fifth(sixty) << '\n';
  cout << "===============================" << endl;
  auto fn6 = bind(my_divide, _1, _2);
  auto fn7 = bind(my_divide, _2, _1);
  auto fn8 = bind(my_divide, _1, 3);
  cout << "fn6(10,5) = " << fn6(10,5) <<endl;
  cout << "fn7(10,5) = " << fn7(10,5) <<endl;
  cout << "fn8(12) = "   << fn8(12) <<endl;

  return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值