【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;
}
目录
相关文章
|
18天前
|
设计模式 安全 数据库连接
【C++11】包装器:深入解析与实现技巧
本文深入探讨了C++中包装器的定义、实现方式及其应用。包装器通过封装底层细节,提供更简洁、易用的接口,常用于资源管理、接口封装和类型安全。文章详细介绍了使用RAII、智能指针、模板等技术实现包装器的方法,并通过多个案例分析展示了其在实际开发中的应用。最后,讨论了性能优化策略,帮助开发者编写高效、可靠的C++代码。
30 2
|
7月前
|
存储 编译器 C语言
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题(下)
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题
108 5
|
3月前
|
存储 编译器 调度
C++ 11新特性之bind
C++ 11新特性之bind
35 1
|
7月前
|
算法 编译器 C语言
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题(中)
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题
66 2
|
7月前
|
算法 编译器 C语言
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题(上)
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题
45 1
|
7月前
|
存储 算法 对象存储
【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]
【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]
96 1
|
7月前
|
Java 编译器 Linux
【C++11(二)】lambda表达式以及function包装器
【C++11(二)】lambda表达式以及function包装器
|
7月前
|
存储 算法 C++
C++11:lambda表达式 & 包装器
C++11:lambda表达式 & 包装器
38 0
|
7月前
|
存储 安全 算法
【C++ 包装器类 std::atomic 】全面入门指南:深入理解并掌握C++ std::atomic 原子操作 的实用技巧与应用
【C++ 包装器类 std::atomic 】全面入门指南:深入理解并掌握C++ std::atomic 原子操作 的实用技巧与应用
571 1
|
7月前
|
存储 算法 C++
【C++ 包装器类 map】C++ 标准库(std)中的map结构 哈希表(unordered_map)和黑红树(map)教程
【C++ 包装器类 map】C++ 标准库(std)中的map结构 哈希表(unordered_map)和黑红树(map)教程
487 1