c++ 包装器
在c++ 中如果我们要实现一个整数比大小的功能有三种方法
- 函数
- 函数指针
- 仿函数
bool fun(int a, int b) {
return a > b;
}
class Fun_class {
public:
bool operator()(int a, int b) {
return a > b;
}
};
int main() {
bool(*fun_ptr)(int, int) = fun;
Fun_class fun_class;
cout << fun(3, 5) << endl; // 函数
cout << fun_ptr(3, 5) << endl; // 函数指针
cout << fun_class(3, 5)<<endl; // 仿函数
system("pause");
return 0;
}
这三种方法实现功能相同但是由于本身类型不同所以不能相互赋值传参,很多时候为了统一类型会浪费大量的时间,这时候就体现出包装器的重要性了
头文件 #include<functional>
语法 function<返回值类型(参数类型,用逗号隔开)> f = .....;
函数,函数指针,仿函数都可给包装器赋值
#include<functional>
bool fun(int a, int b) {
return a > b;
}
class Fun_class {
public:
bool operator()(int a, int b) {
return a > b;
}
};
void ff(function<bool(int, int)> f);
int main() {
bool(*fun_ptr)(int, int) = fun;
Fun_class fun_class;
cout << fun(3, 5) << endl; // 函数
cout << fun_ptr(3, 5) << endl; // 函数指针
cout << fun_class(3, 5)<<endl; // 仿函数
function<bool(int, int)> m1 = fun;
function<bool(int, int)> m2 = fun_ptr;
function<bool(int, int)> m3 = fun_class;
ff(fun);
ff(fun_ptr);
ff(fun_class);
system("pause");
return 0;
}
总的来说,包装器用于统一函数,函数指针,仿函数,使之相互之间可以赋值,调用,进而使代码逻辑更为通畅
感谢观看!