簡體   English   中英

復制矢量的最佳方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM