std::bind

  • Post author:
  • Post category:c++
  • Post comments:0评论

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 可以非常方便地绑定函数和参数,生成新的可调用对象,这为一些场景的开发提供了很大的便利。

文章作者: 张拓
文章链接: http://www.xssl.online/stdbind/
版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明来自 张拓的博客
浏览次数: 468

张拓

陕西西安蓝田张拓QQ1070410059。一生所求不过“心安”二字。 然,尘世多纷扰。

发表回复