#include <iostream>
#include <functional>
// 使用 std::function 和 lambda 表达式
void useFunctional() {
// 定义一个可以接受任何可调用对象(函数、lambda、仿函数等)的 std::function 对象
std::function<int(int, int)> add = [](int a, int b) -> int {
return a + b;
};
// 使用 std::function 对象
int result = add(3, 4);
std::cout << "Result of addition: " << result << std::endl;
}
// 使用 std::bind 绑定参数
void useBind() {
// 定义一个普通函数
auto multiply = [](int a, int b) -> int {
return a * b;
};
// 使用 std::bind 绑定第一个参数为 2
auto doubleValue = std::bind(multiply, 2, std::placeholders::_1);
// 调用绑定后的函数
int doubled = doubleValue(5);
std::cout << "Doubled value: " << doubled << std::endl;
}
int main() {
useFunctional();
useBind();
return 0;
}
std::function:
std::function 是 C++ 标准库中的一个类模板,它可以存储、复制和调用任何可调用对象(如函数指针、lambda 表达式、仿函数等)。std::function<int(int, int)> 类型的对象 add,并使用 lambda 表达式将其初始化为一个加法操作。Lambda 表达式:
[](int a, int b) -> int { return a + b; } 是一个 lambda 表达式,它接受两个整数参数并返回它们的和。std::bind:
std::bind 是 C++ 标准库中的一个函数模板,用于部分应用(partial application)或参数绑定。std::bind 将 multiply 函数的第一个参数绑定为 2,生成一个新的函数对象 doubleValue,该对象只接受一个参数,并将其与 2 相乘。std::placeholders::_1:
std::placeholders::_1 是一个占位符,表示在 std::bind 中未绑定的参数位置。std::placeholders::_1 表示 doubleValue 的唯一参数将被传递给 multiply 函数的第二个参数位置。通过这些工具,C++ 提供了强大的函数式编程支持,使得代码更加简洁和灵活。
上一篇:c++框架代码
下一篇:c++如何判断素数
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站