C++ 内置函数对象用途;参数为仿函数时类型书写

使用场景:
需要某种同类型运算,但在函数调用前未知的场景。用STL内置函数对象,省去再次书写

举个例子:

有一个实现两数加减乘除计算的函数calc

  • 未使用内置函数对象,可能会这样写
    形参int (*f)(int, int)接收函数实参
#include 
using namespace std;

int add (int a, int b) {return a + b;}
int minus (int a, int b) {return a - b;}
int multiply (int a, int b) {return a * b;}
int divide (int a, int b) {return a / b;}

int calc (int a, int b, int (*f)(int, int)) {
	return f(a, b);
}

int main () {
	calc(1, 2, add);
	calc(1, 2, minus);
}
  • 使用内置算术函数对象作仿函数

注意事项:
1 导入库文件 #include
2 形参定义成 int (*f)(int, int),会报错
3 仿函数类型可使用 模板**Function** 定义

#include 
using namespace std;
#include 

// 方法一
template<typename Func>
int calc(int a, int b, Func f) {
	return f(a, b);
}

// 方法二
int calc(int a, int b, Function<int(int, int)> f) {
	return f(a, b);
}

// 内置算术函数对象有:
// T plus/minus/multiplies/divides/modulus(T a, T b);
int main () {
	//传递匿名函数对象
	calc<plus<int>>(1, 2, plus<int>()); 
	calc(1, 2, minus<int>())
}

你可能感兴趣的:(C++,c++,算法,开发语言)