将对象的std :: vector与无符号字符的std :: vector相互转换

问题描述 投票:0回答:1

我有一些定义如下的类,仅包含一些简单的数据类型

class A
{
public:
  float xxx;
  int yyy;
}

我想将该对象的向量转换为无符号字符的向量,反之亦然。有快速的解决方案吗?

谢谢!

c++
1个回答
-1
投票

让我猜猜,这个无符号char的向量实际上是某种序列化的数据?最简单的方法就是

std::vector<unsigned char> vec(sizeof(A));
memcpy(vec.data(), &a, sizeof(A));

您可以反向进行以恢复结构。它不关心填充(也将被复制)。如果要一个向量包含许多项,则只需创建所需大小的向量,然后按偏移量移动数据。

std::vector<A> source;
[...]
std::vector<unsigned char> vec(sizeof(A) * source.size());
for (size_t i = 0; i < source.size(); ++i)
{
    memcpy(vec.data() + (sizeof(A) * i), &source[i], sizeof(A));
}
© www.soinside.com 2019 - 2024. All rights reserved.