gpt4 book ai didi

c++ - 将 POD 结构/结构 vector 复制到 vector 的最优雅方式

转载 作者:太空狗 更新时间:2023-10-29 21:22:51 24 4
gpt4 key购买 nike

通常我使用类似的东西

copy((uint8_t*)&POD, (uint8_t*)(&POD + 1 ), back_inserter(rawData));

copy((uint8_t*)&PODVec[0], (uint8_t*)(&PODVec[0] + PODVec.size()), back_inserter(rawData));

但我不是这个解决方案的 super 粉丝。有更好的方法吗?

最佳答案

您可以编写一对辅助函数来隐藏丑陋的转换和指针算法:

template<typename T>
char* object_begin(T& obj)
{
return
&const_cast<char&>(
reinterpret_cast<const volatile char&>(obj)
);
}

template<typename T>
char* object_end(T& obj)
{
return object_begin(obj) + sizeof(obj);
}

你会像这样使用它们:

vector<POD> vpod;
vector<unsigned char> vbytes;

copy(object_begin(vpod.front()),
object_end(vpod.back()),
back_inserter(vbytes));

关于c++ - 将 POD 结构/结构 vector 复制到 vector<unsigned char> 的最优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19766800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com