gpt4 book ai didi

c - 如何在C中存储不同类型的数据?

转载 作者:太空狗 更新时间:2023-10-29 15:56:31 25 4
gpt4 key购买 nike

<分区>

我想存储一些数据,这些数据可以是仅在运行时才知道的不同类型。我不想浪费任何内存,我想将所有数据读取为浮点值。在 C++ 中,我会做这样的事情

struct IA {
virtual float value(int index) = 0;
};

template<class T>
struct A : public IA {
A(T* bytes, uint32_t size) {
values.resize(size);
memcpy(values.data(), bytes, size*sizeof(T));
}
float value(int index) override {
return static_cast<float>(values[index]);
}
std::vector<T> values;
};


int main() {
uint16_t bytes[] = {1, 2, 3, 4, 5 };
IA *a = new A<uint16_t>(bytes, 5);
float value = a->value(0);
delete a;
}

我的问题是如何使用 C 而不是 C++ 来完成此操作。我可以将数据存储在 uint8_t 数组中,并存储 nr 个位和一个 signed 值。然后每次我从数组中读取一个值时使用 switch case 和 cast。但是如果数组很大并且有很多读取,那将是昂贵的。

我还希望能够传递数组而不用做任何特殊的 if 情况?

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