我有一个 std::vector<A*>
我需要使用 A::Clone()
将其深度复制到另一个 vector .
我想知道我是否可以使用 for_each
而不是使用手写循环或任何标准库算法。
最佳答案
合适的算法是std::transform您可以使用 std::mem_fun 将成员函数调用转换为一元仿函数
例子:
#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));
}
如果目标 vector 已经与输入范围大小相同,您可以将 vec2.begin()
作为第三个参数传递。如果目标为空(或者您想附加到它),请使用 back_inserter
。
关于c++ - 复制指针 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775394/