c++11新特性的小笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

猜你喜欢

转载自blog.csdn.net/recall_yesterday/article/details/82559798