添加减法乘法并除以模板函数

use*_*ser 2 c++ templates

我试图找到模板函数:

template <typename T>
T add(T lhs, T rhs) {
    return lhs + rhs;
}
Run Code Online (Sandbox Code Playgroud)

(用于加,减,乘和除).

我记得有一套标准的功能 - 你还记得它们是什么吗?

chr*_*ris 10

在标题<functional>,你会发现之类的东西std::plus,std::minus,std::multiplies,和std::divides.

它们也不是功能.他们实际上是玩家.

  • 例如,`plus`的函数调用操作符是`T operator()(const T&x,const T&y)const;`但应该是`auto operator()(const T&x,const T&y)const - > declspec (x + y);`不知道委员会是如何下滑的.也许后向兼容性被认为更重要. (5认同)

jua*_*nza 6

您需要函子如的std ::加上<functional>标题.请参阅此处的算术运算 .

这些是仿函数,而不是函数,所以你需要一个实例来做任何有用的事情:

#include <functional>
#include <iostream>
int main() {

  std::multiplies<int> m;
  std::cout << m(5,3) << "\n";

}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,这似乎有些过分,但它们对标准库算法非常有用.例如,在向量中查找元素的乘积:

std::vector<int> v{1,2,3,4,5,6};
int prod = std::accumulate(v.begin(), v.end(), 1, std::multiplies<int>());
Run Code Online (Sandbox Code Playgroud)