如何在顺序容器中存储 3 种不同类型(例如 std::vector)

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

我正在解决一个问题(本质上是一个编码问题),其中编码类型可以是 3 种类型之一:

  1. 第一种类型由 2 个

    int8_t
    完整描述。我可以使用
    std::pair
    来包含它或使用结构。

  2. 第二种类型可以用布尔值来完整描述。

  3. 第三种类型可以通过采用

    {0, 1, 2, 3}
    中的值的整数值来描述,因此基本上是
    uint2_t
    (如果存在)。我可以使用一个结构来包含它。

我遇到的问题是我需要将编码类型的所有实例存储在某个顺序容器中(最好是

std::vector<T>
),但我在弄清楚如何以干净的方式执行此操作时遇到了一些麻烦。

我想我可以使用

std::variant
来表示 3 种类型,或者定义一个自定义结构,也许使用
kind
成员属性(以及表示 3 种类型所需的属性)来告诉我 3 种类型中的哪一种在
struct
的实例中表示。前者似乎会涉及使用
std::variant
方法进行大量“类型检查”,而后者会浪费大量内存。

还有其他方法可以在这里发挥作用吗?

c++ types typechecking std-variant
1个回答
0
投票

您可以使用

std::variant
作为向量的元素类型。

© www.soinside.com 2019 - 2024. All rights reserved.