gpt4 book ai didi

c++ - c++ 中的 void* 与 vector

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:19 25 4
gpt4 key购买 nike

在处理无符号数据类型时,我需要一个通用容器来容纳 uint8 , uint16 , uint32uint64类型。有一个 void*并转换上述数据类型对我有帮助,仍然用 vector<uint8_t> 代替它们使代码看起来更干净。

void* test = (uint32_t) 100;

对比

将相同的东西逐字节推送到 vector 测试上;

这将是更好、更清洁的解决方案。

PS:由于模块的限制,我不能使用boost。

最佳答案

您可以使用union 来存储和访问数据。这将允许 union 的所有成员占用相同的内存,并且您无需强制转换即可访问适当的数据类型。

union UintData
{
uint8_t v8;
uint16_t v16;
uint32_t v32;
uint64_t v64;
};

std::vector<UintData> data;
UintData test;
test.v32 = 0xffffffff;
data.push_back(data);

访问数据时,请确保您只访问当前事件的成员(最后一个成员集),否则行为未定义。

关于c++ - c++ 中的 void* 与 vector<uint8_t>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18152141/

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