std::bind 是 C++11 提供的函数对象适配器,主要用于将函数和其它数据绑定在一起,生成一个新的可调用对象。它可以将函数转换为一个可调用对象,同时可以绑定部分或者全部参数。
下面是一个使用 std::bind 的例子:
#include <functional>
#include <iostream>
using namespace std::placeholders;
void foo(int x, int y, int z) {
std::cout << "x: " << x << ", y: " << y << ", z: " << z << std::endl;
}
int main() {
auto fn = std::bind(foo, 1, _1, 3);
fn(2);
fn(4);
return 0;
}
在这个例子中,我们首先定义了一个名为 foo
的函数,这个函数有三个参数。然后我们使用 std::bind 生成了一个新的可调用对象 fn
,这个可调用对象将 foo
绑定在一起,同时将第一个参数绑定为 1,第三个参数绑定为 3。由于第二个参数使用了 _1
占位符,表示这个参数将在调用 fn
时传入。
在 main
函数中,我们分别调用了 fn(2)
和 fn(4)
,这时候实际上就是调用 foo(1, 2, 3)
和 foo(1, 4, 3)
。可以看到,使用 std::bind 可以非常方便地绑定函数和参数,生成新的可调用对象,这为一些场景的开发提供了很大的便利。
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明来自 张拓的博客!