c++ - Copying a vector of pointers -
i have std::vector<a*> need deep copy vector using a::clone().
instead of using handwritten loops, wondering whether use for_each or standard library algorithm this.
the appropriate algorithm std::transform , can turn member function invocation unary functor std::mem_fun
example:
#include <vector> #include <functional> #include <algorithm> #include <iterator> class x { public: x* clone(); }; int main() { std::vector<x*> vec1, vec2; std::transform(vec1.begin(), vec1.end(), std::back_inserter(vec2), std::mem_fun(&x::clone)); } if target vector same size input range, can pass vec2.begin() third argument. use back_inserter if target empty (or want append it).
Comments
Post a Comment