0

いくつかの float のベクトルがあり、それらのバイトをバイト ベクトルにコピーします。これを達成するための最良の方法は何ですか? 各 float ベクトルを反復し、float を byte に変換するのは非効率的な方法push_back()bufferようです。

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

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

2 に答える 2

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);
于 2012-12-15T17:24:44.240 に答える
0

std::vectorイテレータのペアを取り、それらからベクトルにコピーするコンストラクタがあります。それを見ることから始めるべきです。

「フロートをバイトに変換する」という意味も明確ではありません。ただのキャストダウンですか?そして、あなたのコードは、あなたの意図が正反対であり、float へのキャストであることを示しています。

于 2012-12-15T17:01:12.733 に答える