0

好吧,我正在设计发布/订阅模式(这不是观察者模式!很多人对此感到困惑)。我的问题是:

我有主题的枚举:

  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

[] 中的键必须是枚举中的值。有没有办法做到这一点,或者我需要为每个主题手动完成?

4

2 回答 2

1

一种可能性是std::map<topics, std::vector<cEvent>>. 但是,这可能是多余的,因为您只有 3 个枚举值,编号为 0、1 和 2...

于 2013-01-29T12:54:13.563 回答
1

如果事先知道元素的数量,是否真的需要使用向量?像这样的解决方案怎么样:

template<class T> struct topics {
    T gui, combat, physics
};

topics<cSubscriber *> guiSubscribers;
topics<cEvent> guiEvents;
于 2013-01-29T13:18:53.457 回答