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

时间:2012-06-27 21:33:05

标签: c++ templates

我正在尝试查找模板函数:

template <typename T>
T add(T lhs, T rhs) {
    return lhs + rhs;
}

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

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

2 个答案:

答案 0 :(得分:10)

在标题<functional>中,您会找到std::plusstd::minusstd::multipliesstd::divides等内容。

它们也不是功能。他们实际上是functors

答案 1 :(得分:6)

您需要<functional>标题中的std::plus等仿函数。请参阅算术运算 here

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

#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>());