首页 文章

将向量中的对象指针移动到不同的向量

提问于
浏览
1

现在我有两个Object指针向量

std::vector<Object*> vec1;
std::vector<Object*> vec2;

让我们说vec1有两个对象,vec2没有 . 如何在不破坏实际对象的情况下将vec1中的一个对象移动到vec2?因此,最后两个向量的大小为1,每个向量都有一个对象指针 .

5 回答

  • 0

    在调用delete之前,您不会销毁指向的数据(假设有任何数据) . 你可以做一些简单的事......

    vec2.push_back(vec1[1]);
    vec1.pop_back();
    
  • 0

    你不要破坏这个对象 . 把它从vec1和push_back带到vec2 . 即使你从两者中取出它,也不会破坏物体 .

  • 1

    假设您要将最后 Object*vec1 移动到 vec2

    vec2.push_back(vec1[1]);
    vec1.pop_back();  // not destroying Object*
    

    假设您要将任意 Object* 移动到其他 vector 然后获取其 vector::iterator 并将其复制到目标 . 然后你可以使用 vector::erase() .

  • 0

    正如已经指出的那样,我认为在尝试对它们做任何事情之前,你可能会受益于对指针的更多理解 . 你没有移动或对象本身做任何事情,你正在四处移动/创建指向该对象的新指针 .

  • 2

    如果向量包含对象而不是指向对象的指针而你想移动而不是复制我相信你可以使用std :: move返回可移动但不可复制的rvalue引用 .

    有关于搬家的问题:What is std::move(), and when should it be used?

相关问题