现在我有两个Object指针向量
std::vector<Object*> vec1;
std::vector<Object*> vec2;
让我们说vec1有两个对象而vec2没有。如何在不破坏实际对象的情况下将vec1中的一个对象移动到vec2?因此,最后两个向量大小为1,每个向量都有一个对象指针。
答案 0 :(得分:2)
在调用delete之前,不会破坏指向的数据(假设有任何数据)。你可以做一些简单的事情......
vec2.push_back(vec1[1]);
vec1.pop_back();
答案 1 :(得分:1)
你不要破坏这个物体。把它从vec1和push_back转移到vec2。即使你从两者中取出它,也不会破坏物体。
答案 2 :(得分:0)
假设您要将最后Object*
从vec1
移至vec2
:
vec2.push_back(vec1[1]);
vec1.pop_back(); // not destroying Object*
假设您要将任意Object*
移动到其他vector
,然后获取其vector::iterator
并将其复制到目标。然后你就可以使用vector::erase()
。
答案 3 :(得分:0)
正如已经指出的那样,我认为在尝试对它们做任何事情之前,你可能会受益于对指针的更多理解。你没有移动或对象本身做任何事情,你正在四处移动/创建指向该对象的新指针。
答案 4 :(得分:0)
如果向量包含对象而不是指向对象的指针而你想移动而不是复制我相信你可以使用std :: move来返回可移动但不可复制的rvalue引用。
关于此举,我们有一个问题:What is std::move(), and when should it be used?