c ++结构中的可选变量(变量结构)

Optional Variable(variable structure) in structure in c++

我必须用 C++ 实现一个数据结构,它有可选变量。 作为

 struct xyz
 {
      int x;  //required
      int y;  //optional
      bool a;  // required
      bool b;  // optional
      bool c;  // optional
      std::string d; //optional
      std::string e; // required
      ........

 }

一些变量是必需的意味着固定的,但一些变量是可选的。

我无法为变量设置任何默认值以告知其可选,例如bool 变量只有两种状态,每种状态对我们的项目都有意义。对于整数也是如此,整数的每个值对我来说都是有用的数据。

我用谷歌搜索但没有找到满意的答案。

我试过 std::vector 但它看起来不太好。

 struct xyz
 {
      int x;  //required
      std::vector<int> y;  //optional
      bool a;  // required
      std::vector<bool> b;  // optional
      ........
 }

在这种方法中,我们可以检查向量的大小,如果为零则表示变量不存在,否则变量具有所需的值。

但是对于 bool 或 4 字节 int 创建 std::vector 是数据结构的开销。

任何人都可以提出这些方法吗?

一些编译器已经附带即将推出的 std::optional - 现在称为 std::experimental::optional。我已经使用它一段时间了 (GCC 4.9+),它的状态很好。

如果您的编译器还没有它,但是 good-enough 支持 C++11/C++14,您也可以使用 Andrzej Krzemieński's reference implementation 中的单个 header 到避免对 Boost 的依赖。