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 的依赖。
我必须用 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 的依赖。