目录
1、为什么需要包装器?
函数模板可以接收各种不同类型的参数,即便是普通函数、仿函数、lamda表达式也可以接收,但是在实例化的时候,即便形参和返回值完全一样,因为是不同类型,所以需要实例化多份代码。

所以包装器的作用是统一传入的函数对象(前提是不同函数的形参和返回值都要一样),最终只需实例化出一份代码,从而达到提高效率的目的。

// 要传入的函数 / 表达式
int func_add(int x, int y)
{
return x + y;
}
struct Add {
int operator()(int x, int y)
{
return x + y;
}
};
auto lamda_add = [](int x, int y) -> int {
return x + y;
};
// 函数模板
template<class F>
void test_add(F f, int x, int y)
{
cout << typeid(F).name() << endl;
f(x, y);
}

2、包装器的声明和使用
(1) 声明
包装器的作用是为了统一传递给模板的函数对象,不同函数的形参和返回

本文介绍了C++中包装器的概念及其作用,通过示例详细解释了如何声明和使用包装器统一不同类型的函数对象,并探讨了包装器在接收类成员函数时的应用。此外,还介绍了bind函数用于调整参数顺序和数量的方法。
最低0.47元/天 解锁文章
586

被折叠的 条评论
为什么被折叠?



