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

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

本文关键字:变量 结构 C++      更新时间:2023-10-16

我必须在 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+),而且它的状态很好。

如果你的编译器还没有它,但对C++11/C++14有足够好的支持,你也可以使用Andrzej Krzemieński参考实现中的单个标头来避免对Boost的依赖。