如何基于枚举创建容器
How to create containers based on enum
好吧,我正在设计发布/订阅模式(这不是观察者模式!许多人混淆了这一点)。我的问题是:
我有主题枚举:
enum topics {gui, combat, physics};
然后对于每个主题,我需要 2 个容器。目前我经常这样做:
std::vector <cSubscriber *> guiSubscribers;
std::vector <cEvent> guiEvents;
我想做的是拥有一个使用枚举作为键的向量容器。我的意思是我可以通过以下方式访问它:
events[gui] //it gives me access to vector of gui events
subscribers[combat] //this gives me access to vector of combat subscribers
[] 中的键必须是枚举中的值。有没有办法做到这一点,或者我需要为每个主题手动执行此操作?
如果事先知道元素的数量,真的有必要使用向量吗?这样的解决方案怎么样:
template<class T> struct topics {
T gui, combat, physics
};
topics<cSubscriber *> guiSubscribers;
topics<cEvent> guiEvents;
一种可能性是std::map<topics, std::vector<cEvent>>
。 但是,鉴于您只有 3 个枚举值,这些枚举值将被编号为 0、1 和 2,这可能是矫枉过正......
相关文章:
- 从可变参数创建枚举?
- 创建结构作为枚举类成员
- 在编译时从 c++ 文件创建枚举
- 我正在尝试创建一个枚举,但得到了"identifier expected error"
- 是否可以使用 static_cast 从可变参数枚举创建 boost::mpl::list_c
- 一种创建将字符串常量返回给枚举的类的廉价方法,反之亦然
- 我可以创建一个可以接受任何枚举的模板(非类型)param类吗?C 11
- 创建一个 std::vector 的枚举
- 如何使用枚举元素创建对象
- 在创建C 枚举和依赖数据结构时,如何避免重复自己
- C/C++ 创建具有负值的枚举,而无需对其进行编号
- 在Python中创建SWIG枚举
- C++使用模板为特定的枚举值创建方法
- 从大量的枚举中,我尝试通过使用一些模板技巧来创建一个函数来应用正确的操作,而无需使用开关主体
- 不是创建模板类后的类、命名空间或枚举
- 方便地为枚举定义按位运算符,以创建位标志
- 如何干净地创建类型安全的枚举参数
- 我怎样才能创建类似模板的东西,我自己的枚举
- 有没有一种方法可以为非整数创建枚举数据类型
- visual studio 2008 - c++:如何在函数中创建枚举