c++ - 在同一个 vector 中存储不同种类的枚举 - C++

标签 c++ vector enums

在我的代码中,我有这样的结构:

enum myEnum{ e1, e2, e3};

std::vector myVector<myEnum>;

...

myVector.push_back(e1);
...
myVector.push_back(e2);
...

我需要做的是,我必须定义另外两个枚举

enum myEnum2{ e4, e5, e6};
enum myEnum3{ e7, e8, e9};

我必须找到一种方法将所有这三个枚举存储在同一个 vector 中,让我可以像这样使用这个 vector :

myVector.push_back(e1); //element of myEnum
...
myVector.push_back(e4); //element of myEnum2
...

我生成的软件是一个中间件,我将在单个运行时中仅推回一种枚举类型的元素。

基本上我想要实现的是让我的 vector 能够在内部存储三种不同类型的枚举,但 vector 的名称不会改变。我为什么要这个?因为代码中存在流分离,并且基于分离,我不知道在每个运行时开始时需要哪个枚举。

这可能吗?如果可以,我该如何实现?

编辑:谢谢大家的关注和回答,抱歉我忘了给出一个重要的细节。我的工作代码中的枚举不可编辑。它们是由框架生成的,我不能碰它们。

提前致谢...

最佳答案

这些枚举器中的每一个都可以转换为整数值,并且可以存储该值。您还必须消除值中的重叠。所以:

enum myEnum { e1, e2, e3 };
enum myEnum2 { e4 = e3 + 1, e5, e6 };
enum myEnum3 { e7 = e6 + 1, e8, e9 };

std::vector<int> myVector;
myVector.push_back((int)e1);

当然,转换值和恢复值的细节应该封装在一个类中,而不是像这里的push_back调用那样暴露。

关于c++ - 在同一个 vector 中存储不同种类的枚举 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41144068/

相关文章:

c++ - 使用 C++ fork() 并创建父级的 4 个子级

arrays - 如何在 Haskell 中滚动快速 BVH 表示

c++ - 通过引用传递 vector 然后调用清除

java - 根据 3 个哈希表包含的共同值将 3 个哈希表合并为 1 个哈希表

Java枚举: Return value other than String

mysql - MySQL ENUMS 是打算与 CakePHP 一起使用还是我应该避免使用它们?

c++ - 使用 regex_search 获取所有匹配项的索引?

c++ - std::print() 线程安全吗?它是否存在文本交错问题?

c++ - 错误:预期 ";"使用 std::vector<...>::const_iterator 无信息编译错误?

javascript - 使用其中的字符串作为函数名称(Javascript)