我有三个载体
std::vector<long long unsigned> eightByte_v;
std::vector<unsigned char> oneByteDelta_v;
std::vector<unsigned short> twoByteDelta_v;
我向矢量
插入了两个值eightByte_v.pushback(0x111111111111);
eightByte_v.pushback(0x2222222222222222);
oneByteDelta_v.pushback(0x33);
oneByteDelta_v.pushback(0x44);
twoByteDelta_v.pushback(0x5555);
twoByteDelta_v.pushback(0x6666);
我想将所有向量合并到char *,如下所示。
char[0] = 00
char[1] = 00
char[2] = 11
char[3] = 11
char[4] = 11
char[5] = 11
char[6] = 11
char[7] = 11
char[8] = 22
char[9] = 22
char[10] = 22
char[11] = 22
char[12] = 22
char[13] = 22
char[14] = 22
char[15] = 22
char[16] = 22
char[17] = 22
char[18] = 33
char[19] = 44
char[20] = 55
char[21] = 55
char[22] = 66
char[23] = 66
从char 0到17的相当于eightByte_v
从char 18到19相当于oneByte_v
从char 20到23相当于twoByte_v
我想我可以用memcpy
来做,但还有其他办法吗?
提前谢谢!
答案 0 :(得分:2)
使用union
春天的替代方案,但是很难或不可能以一种定义的方式做到这一点:你总会遇到结构打包和指针转换问题。
鉴于C ++标准保证std::vector
中的数据连续性(并且可以使用data()
函数访问数据缓冲区),memcpy
可以说是最好的方法。
请记住char
的签名依赖于平台。你可能想要更明确;考虑使用unsigned char
。