2012-12-15 64 views
0

我有我想他們的字節複製到一個字節向量花車的幾個向量。什麼是實現這一目標的最佳方式? 迭代每個浮點矢量,浮子轉換爲字節和push_back()buffer似乎是一種低效的方法。C++ - 從浮動向量複製數據到uint8向量?

void CopyToByteVector(Vector<uint8_t>& buffer) 
{ 
    Vector<float> vec1 = //.... 
    Vector<float> vec2 = //.... 

    // best way to copy byte values of vec1, vec2 into buffer? 
} 
+1

你爲什麼要大寫'Vector'? – dupersuper

回答

0

std::vectorconstructor,這需要對從他們的迭代器和拷貝到載體,你應該通過查看啓動。

這一點也不清楚你所說的「浮動轉換爲字節」的意思。它僅僅是被拋棄了嗎?而你的代碼表明你的意圖是完全相反的,一個浮動。

+0

通過「轉換浮子字節」我的意思是提取浮動的字節值,並將它推回 – KaiserJohaan

+0

在你可能想通過'buffer'如在至少一個參考的話。 –

1

我不認爲這是保證工作,就標準而言。我不認爲有一種方法可以做你所要求的不是未定義的行爲。話雖如此,我不久肯定的是,在幾乎所有情況下(也可能在絕對是你關心的所有情況下),它會工作。

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);