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