[英]C++ - copy data from float vectors to uint8 vector?
我有幾個浮點向量,我想將其字節復制到字節向量。 做到這一點的最佳方法是什么? 迭代每個浮點向量,將浮點轉換為字節,然后在buffer
上push_back()
似乎是一種低效的方法。
void CopyToByteVector(Vector<uint8_t>& buffer)
{
Vector<float> vec1 = //....
Vector<float> vec2 = //....
// best way to copy byte values of vec1, vec2 into buffer?
}
就標准而言,我認為這不能保證有效。 我認為沒有一種方法可以解決您未定義的行為。 話雖如此,我幾乎可以肯定,在幾乎所有情況下(並且可能在您關心的絕對所有情況下),它都可以工作。
uint8_t * ibegin = reinterpret_cast<uint8_t*>(&vec1[0]);
auto size = vec1.size() * (sizeof(float)/sizeof(uint8_t));
buffer.assign(ibegin, ibegin + size);
// Not sure what you wanted to do with vec2. Append it?
ibegin = reinterpret_cast<uint8_t*>(&vec2[0]);
size = vec2.size() * (sizeof(float)/sizeof(uint8_t));
buffer.insert(buffer.end(), ibegin, ibegin + size);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.