[英]Best way to copy a vector
我有一個帶有X
類型向量的 struct Y
,我想問一下在這種情況下 assign 是最好的解決方案還是 copy 會更好? 我應該調整y.xVec
大小嗎?
#include <iostream>
#include <vector>
struct X {
X(int x):x_(x)
{}
int x_;
};
struct Y {
std::vector<X>xVec;
};
int main()
{
X x1(1);
X x2(2);
std::vector<X> v = {x1,x2};
Y y;
y.xVec.assign(v.begin(), v.end());
return 0;
}
最簡單的代碼在這里是最好的:
y.xVec = v;
或者,如果您不再需要v
:
y.xVec = std::move(v);
或者,如果您將再次使用v
但從空開始:
y.xVec = std::exchange(v, {});
如果您需要再次使用v
,則exchange()
比move()
更好,因為它將v
保留在其默認構造的 state (空)中,而不是move()
給出的未指定的 state 中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.