【发布时间】:2020-10-01 11:30:14
【问题描述】:
我需要一个整数向量,我可以在其中区分 0 和 -0。 到目前为止,我已经想出了为这种特殊情况定义一个名为 zero_int 的新类的想法..
但是,现在我不能将普通整数和 zero_int 都推送到同一个向量中。 解决方案 std::variant 的大小为 8 字节,我需要为每个变量保留 4 的大小。 定义一个虚拟基类 my_int 并将 zero_int 设置为其派生类会将 zero_int 的大小增加到 32 字节...
我知道可以使用vector<void*> 之类的东西,但我不知道如何使用.. - 另外,指针向量中的指针指向的对象是否在内存中是连续的? - 这在这种情况下很重要。
对于如何解决此问题的任何建议,我将不胜感激
【问题讨论】:
-
您的整数是否适合 24 位范围?如果是这样,您可以使用 float 而不会损失任何精度。
-
呵呵,比我预想的还要短时间
-
您应该创建一个新的整数类,其中包含一个 bool 表示符号和一个 unsigned int 表示值(hints here 和 here)并仅使用该类的实例填充您的向量。
-
@GiovanniCerretani “我需要为每个变量保留 4 的大小”
-
大小可以通过位域轻松管理。
标签: c++ vector int variant negative-zero