[英]How to move one vector into another vector without copying
我在 scope 內部創建了一個大vector<object>
,我想將其推入位於 scope 外部的向量而不復制它(因為它非常大)。 有沒有一種方法可以將向量 v 推入 vvec 而無需像我目前所做的那樣進行復制?
std:vector<std::vector<object>> vvec;
{
std::vector<object> v;
v.emplace_back(object());
vvec.push_back(v);
}
你可以std::move
它
std::vector<std::vector<object>> vvec;
{
std::vector<object> v;
v.emplace_back(object());
vvec.push_back(std::move(v));
}
如果我模擬 class 如下
struct object
{
object() { std::cout << "default construct\n"; }
object(object const&) { std::cout << "copy construct\n"; }
object(object&&) { std::cout << "move construct\n"; }
};
那么上面的代碼片段現在會生成 output
default construct
move construct
因此,內部副本被移動避免了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.