簡體   English   中英

C ++-將數據從浮點向量復制到uint8向量?

[英]C++ - copy data from float vectors to uint8 vector?

我有幾個浮點向量,我想將其字節復制到字節向量。 做到這一點的最佳方法是什么? 迭代每個浮點向量,將浮點轉換為字節,然后在bufferpush_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);

std::vector有一個構造函數 ,該構造函數接受一對迭代器並將其從復制器復制到vector中,您應該首先查看它。

還不清楚“將浮點數轉換為字節”是什么意思。 它僅僅是被拋棄嗎? 您的代碼表明您的意圖是完全相反的,導致浮標。

暫無
暫無

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

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