【C++】bind包装器

简介: 【C++】bind包装器

bind包装器

调用bind的一般形式:auto newCallable = bind(callable,arg_list);

其中,newCallable本身是一个可调用对象,arg_list是一个逗号分隔的参数列表,对应给定的 callable的参数。

当我们调用newCallable时,newCallable会调用callable,并传给它arg_list中 的参数。

bind的使用

#include<iostream>
#include<functional>
using namespace std;
int Add(int a, int b)
{
  cout << a << "  " << b << endl;
  return a + b;
}
class Sub
{
public:
  int sub(int a, int b)
  {
    cout << a << "  " << b << endl;
    return a - b;
  }
  double mul(int a, int b, double rate)
  {
    return a * b * rate;
  }
  static int test(int a, int b)
  {
    return a + b;
  }
};
int main(void)
{
  function<int(int, int)>func1 = bind(Add, placeholders::_1, placeholders::_2);
  function<int(int, int)>func2 = bind(Add, placeholders::_2, placeholders::_1);
  func1(1, 2);
  func1(2, 1);
  function<int(int, int)>func3 = bind(&Sub::sub,Sub(), placeholders::_1, placeholders::_2);
  function<int(int, int)>func4 = bind(&Sub::sub,Sub(), placeholders::_2, placeholders::_1);
  func3(5, 6);
  func4(5, 6);
  function<int(int, int)>func5 = bind(&Sub::mul, Sub(), placeholders::_1, placeholders::_2, 1.5);
  function<double(int, int)>func6 = bind(&Sub::mul, Sub(), placeholders::_1, placeholders::_2, 1.5);
  cout << func6(3,3)<<endl;
  function<int(int, int)>func7 = bind(&Sub::test, placeholders::_1, placeholders::_2);
  cout << func7(10, 20)<<endl;
  return 0;
}
目录
相关文章
|
1天前
|
存储 算法 C++
C++11:lambda表达式 & 包装器
C++11:lambda表达式 & 包装器
6 0
|
3天前
|
存储 算法 对象存储
【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]
【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]
13 1
|
4月前
|
C++
C++高级开发之可调用对象、function、bind(2)
std::bind 绑定器   要使用这个函数模板,在 cpp文件前面要包含如下头文件#include<funcitonal>   std::bind能够将对象以及相关的参数绑定到一起,绑定完成后可以直接调用,也可以用
30 0
|
17天前
|
Java 编译器 Linux
【C++11(二)】lambda表达式以及function包装器
【C++11(二)】lambda表达式以及function包装器
|
2月前
|
存储 编译器 C语言
【C++ 模板编程 实用手段】深入理解 C++ 中的 packaged_task、invoke_result_t、bind、result_of 和 Lambda
【C++ 模板编程 实用手段】深入理解 C++ 中的 packaged_task、invoke_result_t、bind、result_of 和 Lambda
41 0
|
2月前
|
存储 算法 C++
【C++ 包装器类 std::tuple】全面入门指南:深入理解并掌握C++ 元组 std::tuple 的实用技巧与应用(三)
【C++ 包装器类 std::tuple】全面入门指南:深入理解并掌握C++ 元组 std::tuple 的实用技巧与应用
32 0
|
2月前
|
存储 编解码 数据库
【C++ 包装器类 std::tuple】全面入门指南:深入理解并掌握C++ 元组 std::tuple 的实用技巧与应用(二)
【C++ 包装器类 std::tuple】全面入门指南:深入理解并掌握C++ 元组 std::tuple 的实用技巧与应用
54 0
|
2月前
|
存储 编译器 数据库
【C++ 包装器类 std::tuple】全面入门指南:深入理解并掌握C++ 元组 std::tuple 的实用技巧与应用(一)
【C++ 包装器类 std::tuple】全面入门指南:深入理解并掌握C++ 元组 std::tuple 的实用技巧与应用
49 0
|
2月前
|
存储 安全 算法
【C++ 包装器类 std::atomic 】全面入门指南:深入理解并掌握C++ std::atomic 原子操作 的实用技巧与应用
【C++ 包装器类 std::atomic 】全面入门指南:深入理解并掌握C++ std::atomic 原子操作 的实用技巧与应用
52 1
|
2月前
|
存储 安全 C++
【C++ 包装器类 std::optional】全面入门指南:深入理解并掌握C++ std::optional的实用技巧与应用
【C++ 包装器类 std::optional】全面入门指南:深入理解并掌握C++ std::optional的实用技巧与应用
60 0