当std :: transform被调用时,UnaryOperator可以是一个成员函数 [英] Can UnaryOperator be a member function when std::transform is called

查看:132
本文介绍了当std :: transform被调用时,UnaryOperator可以是一个成员函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基于 std :: transform

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可以是一个成员函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆