std::bind函数用法
时间: 2023-09-04 10:12:42 浏览: 167
C++ 11 std::function和std::bind使用详解
std::bind函数是C++标准库中的一个函数,它可以用于将函数和参数绑定在一起,生成一个新的可调用对象。std::bind的函数原型如下:`std::bind(Function&& fn, Args&&... args)`。其中,`fn`是待绑定的函数或函数对象,`args`是需要绑定的参数。std::bind的主要作用是生成一个可调用对象,该对象可以延迟调用被绑定的函数,并可以通过占位符和附加参数来修改调用时的参数。
使用std::bind时,可以将函数名作为第一个参数,后面是需要绑定的参数,使用占位符`std::placeholders::_1`, `std::placeholders::_2`等来表示参数的位置。例如,`std::bind(my_divide, _1, 2)`将函数`my_divide`的第一个参数绑定为占位符`_1`,第二个参数绑定为2。
一个示例代码如下:
```cpp
#include <iostream>
#include <functional>
double my_divide(double x, double y) {
return x / y;
}
int main() {
using namespace std::placeholders;
auto fn_half = std::bind(my_divide, _1, 2);
std::cout << fn_half(10) << '\n'; // 输出 5
return 0;
}
```
在上述代码中,使用`std::bind(my_divide, _1, 2)`将函数`my_divide`的第一个参数绑定为占位符`_1`,第二个参数绑定为2。然后,通过调用`fn_half(10)`,实际上是调用了`my_divide(10, 2)`,返回值为5。
总结来说,std::bind函数可以将函数和参数进行绑定,生成一个新的可调用对象,可以通过占位符和附加参数来修改调用时的参数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [std::function 和 函数适配器 std::bind】 C++11 全面的std::function和std::bind的入门使用教程](https://blog.csdn.net/qq_21438461/article/details/129581132)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C++11 std::bind](https://blog.csdn.net/mayue_web/article/details/87915389)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文