如何使用for_each函数作为重载运算符()

时间:2010-06-21 04:03:49

标签: c++ algorithm stl iterator

我有一个std :: vector函数对象。每个对象都可以取一个int,所以我可以说obj(4)并得到一个int结果。如何使用for_each算法处理向量的每个元素?

2 个答案:

答案 0 :(得分:1)

哪个版本的C ++? C ++ 0x Lambdas使这简短而甜蜜。

在C ++ 03中,for循环比for_each简单。

要在C ++ 03中使用for_each,您需要创建一个函数,将所有输入参数存储在成员变量中并将其传递给for_each。向量中的每个仿函数都将作为参数传递给此访问者仿函数,然后需要使用存储的参数调用其operator()。

答案 1 :(得分:1)

您必须创建一个“调用”每个对象的仿函数:

struct Caller {
  int value;
  void operator()( const YourFunctorHere& f ) const {
    f( value );
  }
} caller;
std::for_each( functors.begin(), functors.end(), caller );