function和bind使用实践

文章目录

    • [1.functional 接受全局函数](#1.functional 接受全局函数)
    • [2.functional 接受lambda表达式](#2.functional 接受lambda表达式)
    • [3.functional 接收静态成员函数](#3.functional 接收静态成员函数)
    • [4.functional 接收成员函数](#4.functional 接收成员函数)
    • [5.bind 绑定全局函数](#5.bind 绑定全局函数)
    • [6.bind 绑定成员函数](#6.bind 绑定成员函数)
    • [7.使用 placeholders占位](#7.使用 placeholders占位)

1.functional 接受全局函数

2.functional 接受lambda表达式

3.functional 接收静态成员函数

4.functional 接收成员函数

5.bind 绑定全局函数

6.bind 绑定成员函数

7.使用 placeholders占位

cpp 复制代码
#include <iostream>
#include <functional>
#include <string>

using namespace std;

/*
 * 1.functional 接受全局函数
 * 2.functional 接受lambda表达式
 * 3.functional 接收静态成员函数
 * 4.functional 接收成员函数
 * 5.bind 绑定全局函数
 * 6.bind 绑定成员函数
 * 7.使用 placeholders占位
 * */

void print(string name,int age){
    cout << name << "="<< age << endl;
}

class stu{
public:
    string read(string name,int age){
        return name+ to_string(age) +"岁在看书";
    }

    static void introduce(string name,int age){
        cout << "我是"<< name << age << "岁了"<< endl;
    }
};

int add(int a,int b){
    return a+b;
}

int main() {
    function<void (string,int)> f1= print;
    f1("小明",12);

    function<int (int,int)> f2 = [](int a,int b){return a+b;};
    int result = f2(1,2);
    cout << "result=" << result << endl;

    function<void (string,int)> fs = stu::introduce;
    fs("小红",15);

    function<string (stu,string,int)> fr = &stu::read;
    stu s1;
    fr(s1,"小丽",8);
    function<string (stu&,string,int)> fr2 = &stu::read;
    stu s2;
    fr2(s2,"小天",100);
    function<string (stu*,string,int)> fr3 = &stu::read;
    stu s3;
    fr3(&s3,"康康",26);

    auto b = bind(add,1,2);
    int result2 = b();
    cout << "result2 = "<< result2 <<endl;
    function<int ()> f3 = bind(add,1,3);
    int result3 = f3();
    cout << "result3 = "<< result3<<endl;

    stu ss;
    stu sa;
    auto b2 = bind(&stu::read,ss,"莎莉",19);
    function<string ()> f4 = bind(&stu::read,sa,"莎莉2",36);
    f4();

    stu s11;
    stu s12;
    auto b3 = bind(&stu::read,s11,placeholders::_1,85);
    b3("阿妹");

    function<string (string,int)> f5 = bind(&stu::read,s12,placeholders::_1,placeholders::_2);
    f5("野鸡",40);
    
    return 0;
}
相关推荐
im_AMBER3 分钟前
Leetcode 52
笔记·学习·算法·leetcode
小欣加油3 分钟前
leetcode 946 验证栈序列
c++·算法·leetcode·职场和发展
包饭厅咸鱼31 分钟前
PaddleOCR----制作数据集,模型训练,验证 QT部署(未完成)
算法
Novlan131 分钟前
TDesign UniApp 组件库来了
前端
用户479492835691533 分钟前
React DevTools 组件名乱码?揭秘从开发到生产的代码变形记
前端·react.js
无敌最俊朗@44 分钟前
C++ 并发与同步速查笔记(整理版)
开发语言·c++·算法
王哈哈^_^1 小时前
【完整源码+数据集】课堂行为数据集,yolo课堂行为检测数据集 2090 张,学生课堂行为识别数据集,目标检测课堂行为识别系统实战教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
m0_495562781 小时前
Swift的逃逸闭包
服务器·php·swift
夏鹏今天学习了吗1 小时前
【LeetCode热题100(66/100)】寻找两个正序数组的中位数
算法·leetcode·职场和发展