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