我有一个项目,我必须在其中创建n个容器的异构列表,其中将给出n
。容器可以是列表,队列或堆栈,每个容器都必须实现bool member(T const& x)
方法,该方法检查容器中是否存在对象。我还必须为异构列表创建一个迭代器,它可以遍历所有容器的每个元素(不同容器中的所有元素将具有相同的类型)。
我的想法是拥有一个包含member
方法的接口和3个新类,每个类都继承自接口和stl容器(我知道这是一个坏主意,但我不知道'我想写自己的列表,队列和堆栈类)。至于异构列表,我想到了一个带有数据成员的类,它是接口类的列表或向量。
我不知道该怎么做的事情是:我如何从stl容器中完全继承通用类型T.不知道这样的东西是否可行:
template <typename T>
class MyList : public list<T>, CommonInterface
我最大的问题是如何为异构列表创建迭代器,以便它可以遍历思考容器的所有元素。我的想法是将所有元素转移到一个向量对象,并使用它的迭代器(我猜是一种包装)。
欢迎任何有关此问题的想法和解决方案。如果问题不明确,我会尽快澄清。
答案 0 :(得分:0)
这比您想象的要复杂得多。主要原因是C ++是静态类型的,因此不适合这种方法。 但一种解决方案是使用静态容器的集合和unordered_map来在遍历特定类型的容器时选择正确的容器。