我有各種結構(由整型類型和整數類型數組組成)以及我想添加到無符號字符向量中的無符號字符數組。將結構添加到字節向量,然後再添加另一個
因此,考慮以下僞代碼:
struct
{
short x;
short sz;
unsigned char y;
unsigned char w;
unsigned char z[ 2 ];
} example_struct;
example_struct ex_s;
unsigned char array[ <some val-could be several thousand> ];
我看了看這個問題:Convert a struct to vector of bytes 和我寫道:
std::vector< unsigned char > v(sizeof(example_struct) + array_len);
unsigned char * ptr = reinterpret_cast< unsigned char * >(&ex_s);
std::vector< unsigned char > tmp_v(ptr, ptr + sizeof(example_struct));
v = tmp_v;
std::vector< unsigned char > tmp_v2(array, array + array_len);
v.insert(v.end(), tmp_v2.begin(), tmp_v2.end());
是否有更簡單(更易讀)的方式做它?
用結構的內容創建v而不是將臨時變量賦值給它會更高效嗎?
如果這樣做,那麼v不會是最後長度的大小,最有可能導致在添加數組時通過向量進行另一次內存分配。會創建一個空的矢量創建,然後是總長度的備用加上添加是首選嗎?
交換是首選嗎?
是插入添加第二個向量的首選方法嗎?
關於如何寫這個的任何其他建議?
這個問題對Stack Overflow來說太寬泛了,這個問題是關於編碼和確定答案的具體問題。這對於[代碼評論](http://codereview.stackexchange.com)或[程序員](http://programmers.stackexchange.com)更爲合適。請閱讀[此meta post](http://meta.stackexchange.com/a/82990/228805)瞭解更多信息。 –