c++ - 复制指针 vector

标签 c++

我有一个 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/

相关文章:

c++ - do-while循环,无限循环

c++ - Doxygen 链接到 const 函数

c++ - ifstream 运算符 >> uint16_t 设置 failbit

c++ - 关于删除指针的 Clang 警告

c++ - 为什么 clang 使用 libstdc++ 删除包含 std::optional 的类型上的显式默认构造函数?

c++ - 提高通过 ctypes 将数据从 Python 传递到 C(++) 的速度

c++ - directory_iterator - 复制到 "rewind"?

c++ - 无法声明指向 ‘const class FOO&’ 错误的指针

c++ - 将 HLOCAL 转换为 LPTSTR

c++ - 我将如何定义组合顶点的自定义方式?