C ++中容器的异构列表

问题描述 投票:1回答:1

我有一个项目,其中我必须列出n个容器的异构列表,其中将给出n。容器可以是列表,队列或堆栈,并且每个容器都必须实现bool member(T const& x)方法,该方法检查容器中是否存在对象。我还必须为异构列表创建一个迭代器,该迭代器可以遍历所有容器的每个元素(不同容器中的所有元素都属于同一类型)。

[我的想法是有一个包含member方法的接口和3个新类,每个类都从该接口和stl容器继承(我知道这是一个坏主意,但我不想编写自己的列表,队列和堆栈类)。至于异构列表,我想到了一个带有数据成员的类,该成员是接口类的列表或向量。

我不知道该怎么办:我如何从通用类型T的stl容器中完全继承。不知道这样的事情是否可以工作:

template <typename T>
class MyList : public list<T>, CommonInterface

另外,我最大的问题是如何为异构列表创建迭代器,以便遍历容器的所有元素。我的想法是将所有元素转移到一个矢量对象,并使用它的迭代器(我猜是一种包装)。

欢迎对此问题提出任何想法和解决方案。如果对这个问题有不清楚的地方,我会尽力澄清。

c++ list stl queue containers
1个回答
0
投票

这比您想象的要复杂得多。主要原因是C ++是静态类型的,因此不适合这种方法。但是一种解决方案是使用静态容器的集合和unordered_map来遍历特定类型的容器时能够选择正确的容器。

© www.soinside.com 2019 - 2024. All rights reserved.