gpt4 book ai didi

c++ - 存储各种尺寸也各不相同的结构的好方法?

转载 作者:搜寻专家 更新时间:2023-10-31 01:58:42 25 4
gpt4 key购买 nike

标题有点困惑,所以我会用例子来解释更多。请注意:我正在解析文件格式。假设我们有这样的结构:

struct example
{
typeA a;
typeB b;
typeX x;
typeY y;
typeZ z;
};

目前一切正常。现在的问题是,typeXtypeYtypeZ 的大小可能不同。根据文件头(元数据)中的标志,它们可以是两个或四个字节大。另一件事是,还有几个这样的结构(大约 40 个)。他们每个人都使用typeXtypeYtypeZ。有的全部,有的只有一两个。最后,它们中的大多数都是可选的,因此可能只使用了四五个结构,或者 20 或 30...

我想知道是否有人知道如何存储如此多变的数据集。我考虑过使用模板,但不知道它是否正确。

编辑:澄清更多:内存不是大问题,所以我可能可以承受浪费一点空间。如果 typeX 是四个字节,那么所有结构都是如此。但是它们不同步,所以typeX可以是4个字节,typeZ可以是2个字节。大多数结构可能会被多次使用,所以可以有50个example1结构,10个example2结构等。

最佳答案

对我来说问题不在于分配一些空间,在概念上我们可以这样做:

byte *pA = new byte[the size this time];

而是你对这些 typeA 对象做了什么。什么

pA->getValue()

回归?它的意图是始终是 32 位数字吗?或者我们真的有

pA->get16bitValue()

在某些情况下

pA->get32bitValue()

在其他方面?

我会首先寻找一种方法来封装这种差异,而这样做的方法在很大程度上取决于您如何使用这些值。存储问题可能可以通过一些动态分配来解决。这是我认为棘手的 typeA 的实际行为。

关于c++ - 存储各种尺寸也各不相同的结构的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3758626/

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