【发布时间】:2010-06-21 04:03:48
【问题描述】:
我有一个函数对象的 std::vector。每个对象都可以接受一个 int,所以我可以说 obj(4) 并得到一个 int 结果。如何使用算法 for_each 处理向量的每个元素?
【问题讨论】:
标签: c++ algorithm stl iterator
我有一个函数对象的 std::vector。每个对象都可以接受一个 int,所以我可以说 obj(4) 并得到一个 int 结果。如何使用算法 for_each 处理向量的每个元素?
【问题讨论】:
标签: c++ algorithm stl iterator
您必须创建一个“调用”每个对象的函子:
struct Caller {
int value;
void operator()( const YourFunctorHere& f ) const {
f( value );
}
} caller;
std::for_each( functors.begin(), functors.end(), caller );
【讨论】:
bind2nd( mem_fun_ref( YourFHere::memberfunction ), 4 )...
transform 和 copy。 for_each 不需要 unary_function 成员。
哪个版本的 C++? C++0x Lambda 让这一切变得简短而甜蜜。
在 C++03 中,for 循环将比 for_each 更简单。
要在 C++03 中使用 for_each,您需要创建一个函子,将所有输入参数存储在成员变量中并将其传递给 for_each。向量中的每个仿函数都将作为参数传递给这个访问者仿函数,然后您需要使用存储的参数调用它的 operator()。
【讨论】: