簡體   English   中英

是否可以將向量移動到不同類型的向量中?

[英]Is it possible to move a vector into a vector of different type?

假設,我有兩個與 arguments 一起使用的函數,它們是不同類型的向量:

void foo(const std::vector<SomeType>& v);
void bar(const std::vector<std::byte>& v);

如果在我的代碼的某個地方我想將相同的向量 object 傳遞給這兩個函數怎么辦? 顯然,我不能只將一種類型的向量轉換為不同類型的向量,所以我必須創建第二個向量:

const std::vector<SomeType> v(...);
foo(v);
// v is not needed anymore
const auto vSizeBytes = v.size() * sizeof(SomeType);
std::vector<std::byte> v2;
v2.resize(vSizeBytes);
std::memcpy(&v2[0], &v[0], vSizeBytes);
bar(v2);

但是如果我確定在調用foo(v) v不再需要 v ,我想要移動而不是復制。 是否有任何替代std::memcpy()用於將容器的原始數據移動到另一個容器而不是復制它?

您可以使用模板。 假設 function 中的代碼適用於這兩種類型。

template<class SOMETYPE> void foo(const std::vector<SOMETYPE>& v);
template<class SOMETYPE> void bar(const std::vector<SOMETYPE>& v);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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