我有方法:
#include <vector>
#include <numeric>
template <typename T>
class mVector: public std::vector<T> {
template<typename Operation>
T accumulate (Operation op, T init = (T)0) {
typename mVector<T>::const_iterator begin = this->begin();
typename mVector<T>::const_iterator end = this->end();
return std::accumulate(begin, end, init, op);
}
};
我可以用它传递例如std::plus<int>
,如下所示:
#include <functional>
V.accumulate(std::plus<int>());
我的问题是如何制作我自己的功能,我将能够通过这种方式。例如:
V.accumulate(f<int>());
f(x, y) = x+y-1
答案 0 :(得分:1)
鉴于你有
template <typename T>
T f(T x, T y) {
return x+y-1;
}
你可以做到
mVector<int> v;
v.accumulate(f<int>);