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+),而且它的状态很好。
如果你的编译器还没有它,但对C++11/C++14有足够好的支持,你也可以使用Andrzej Krzemieński参考实现中的单个标头来避免对Boost的依赖。
相关文章:
- 从结构寻址时,MMAP变量的行为很奇怪
- 访问在 C++ 结构中声明的枚举变量
- 我可以在 C++ 中将数据成员/变量从其定义之外添加到结构中吗?
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 为什么未命名的结构内联变量在每个翻译单元中没有相同的地址?
- 在类构造函数中使用结构变量
- 在 c++ 中将变量作为结构构造函数中的引用传递
- 在类构造函数中定义结构变量的参数
- 为什么我们再次从结构对象创建结构变量?
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 模板化结构中的零大小成员变量
- C++ 结构中的可选变量(变量结构)
- 对其中一个变量的多变量结构进行排序
- 指向非指针变量结构的指针。这些变量在哪里,堆还是堆栈?
- 是好是坏:为了避免使用全局变量/结构体的属性/大量参数而使用巨型结构体
- Cpp变量/结构用于存储128位数据
- 第一私有变量结构中允许的OpenMP调用和指令
- VS2008传递变量-结构与结构组件-优点/缺点
- 在c++类成员函数中使用c库变量/结构成员
- 如何不迷失在执行'<'对于多变量结构