我正在尝试找到可以执行以下操作的模板函数:
template <typename T>
T add(T lhs, T rhs) {
return lhs + rhs;
}
(用于加法、减法、乘法和除法)。
我记得有一套标准的功能——你还记得它们是什么吗?
在标题<functional>
中,您会找到类似std::plus
、std::minus
、std::multiplies
和的内容std::divides
。
它们也不是函数。它们实际上是函子。
您需要标头中的仿函数,例如std::plus<functional>
。请参阅此处的算术运算 。
这些是函子,而不是函数,所以你需要一个实例来做任何有用的事情:
#include <functional>
#include <iostream>
int main() {
std::multiplies<int> m;
std::cout << m(5,3) << "\n";
}
在上面的示例中,这似乎有点矫枉过正,但它们对于标准库算法非常有用。例如,求向量中元素的乘积:
std::vector<int> v{1,2,3,4,5,6};
int prod = std::accumulate(v.begin(), v.end(), 1, std::multiplies<int>());