本文介绍了当std :: transform被调用时,UnaryOperator可以是一个成员函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
基于
template < class InputIterator, class OutputIterator, class UnaryOperator >
OutputIterator transform ( InputIterator first1, InputIterator last1,
OutputIterator result, UnaryOperator op );
可以 op
是成员函数吗?
推荐答案
如果你将调用包装在lambda中,这很容易做到:
It is pretty easy to do if you wrap the call in lambda:
#include <algorithm>
#include <vector>
class C {
public:
int op() const { return 1; }
};
class D {
int op() { return 1; }
void f() {
std::vector<C> xs;
std::vector<int> ys;
std::transform(xs.begin(), xs.end(), ys.begin(),
[](const C& x) { return x.op(); });
std::transform(xs.begin(), xs.end(), ys.begin(),
[this](const C& x) { return this->op(); });
}
};
这篇关于当std :: transform被调用时,UnaryOperator可以是一个成员函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!