私は行うテンプレート関数を見つけようとしています:
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>());