文章

Functions and Lambdas

Lambda

1
2
3
[capture](parameters) -> return_type {
    // 函数体
}

Function pointers

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
#include <iostream>

// 定义一个函数原型
int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}

int main() {
    // 声明一个函数指针,指向具有两个整数参数和整数返回类型的函数
    int (*operation)(int, int);

    // 将函数指针指向 add 函数
    operation = add;

    // 使用函数指针调用 add 函数
    int result_add = operation(3, 4);
    std::cout << "Result of add: " << result_add << std::endl;  // 输出 7

    // 将函数指针指向 subtract 函数
    operation = subtract;

    // 使用函数指针调用 subtract 函数
    int result_subtract = operation(7, 3);
    std::cout << "Result of subtract: " << result_subtract << std::endl;  // 输出 4

    return 0;
}

Everything (lambdas, functors, function pointers) can be cast to a standard
function!

STL FUNCTION

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
#include <iostream>
#include <functional>

// 定义一个普通函数
int add(int a, int b) {
    return a + b;
}

int main() {
    // 使用 lambda 表达式创建一个匿名函数
    auto lambda = [](int a, int b) -> int {
        return a + b;
    };

    // 使用 std::function 包装函数指针
    std::function<int(int, int)> func_pointer = add;

    // 使用 std::function 包装 lambda 表达式
    std::function<int(int, int)> func_lambda = lambda;

    // 调用包装后的函数
    int result_pointer = func_pointer(3, 4);
    int result_lambda = func_lambda(3, 4);

    std::cout << "Result of function pointer: " << result_pointer << std::endl;  // 输出 7
    std::cout << "Result of lambda function: " << result_lambda << std::endl;    // 输出 7

    return 0;
}


本文由作者按照 CC BY 4.0 进行授权