假设我有一个A类对象的共享指针向量。我想收集所有A对象的方法A :: foo的所有返回值,并将它们存储在某个容器中,比如另一个向量。
是否可以使用std::transform
或std::for_each
和std::bind
或某些boost
功能完成此操作?
class A {
public:
string foo(int p);
};
std::vector<shared_ptr<A>> vec;
答案 0 :(得分:4)
std::transform
对此很好:
std::vector<std::string> string_vec;
const int magic_number = 42;
std::transform(std::begin(vec),
std::end(vec),
std::back_inserter(string_vec),
[magic_number](std::shared_ptr<A> a){ return a->foo(magic_number); } );
显然,您需要确定要传递给int
的{{1}}。
在C ++ 03中,您可以用函子或函数替换lambda:
A::foo(int)