版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/recall_yesterday/article/details/82559798
最近有用到了c++11的特性,function,bind,lambda。温故知新。
1.先说下,function,这个是一个通用的,可调用对象的封装(可调用对象包括了,函数指针,函数对象 ,lambda),这样封装起来,可以放心传递,类型安全。
2.函数的绑定器,bind,有时候我们需要将一个函数的参数固定下来,比如类的成员函数,如果需要像普通函数那样调用的话 ,就需要将对象绑定。
3.lambda 也就是匿名函数。可以很方便的定义一个函数,而不需要以前那样只是临时的函数也需要写一大串。
//
// main.cpp
//
// Created by Itachi Wang on 9/9/18.
// Copyright © 2018年 Itachi Wang. All rights reserved.
//
//练习使用c++11的function 和lambda 以及绑定函数
#include <iostream>
#include <functional>
#include <algorithm>
using namespace std;
int add (int a ,int b){
cout << "a = "<<a <<endl;
cout << "b = "<< b <<endl;
return a+b;
}
int main(int argc, const char * argv[]) {
std::cout << "Hello, World!\n";
function<int(int,int)> ADD(add);
cout << ADD(1,2)<<endl;
function<int(int)> dl;
auto dl2 = bind(add, 10,std::placeholders::_2);//这里需要说明的是,这里的占位符是指你实际调用的时候的参数值,
//所以,dl2(2,6)取第二个6+10 输出为16
cout << dl2(2,6)<<endl;
function<int(int,int)> sub = [](int i,j)->int{return i-j;};
cout << sub(7,3)<<endl;
return 0;
}