我有一个项目,在这个项目中,我必须创建一个n个容器的异构列表,其中将提供n
。容器可以是列表、队列或堆栈,并且每个容器都必须实现一个bool member(T const& x)
方法,该方法检查容器中是否存在对象。我还必须为异构列表创建一个迭代器,它可以遍历所有容器中的每个元素(不同容器中的所有元素都属于同一类型)。
我的想法是有一个包含member
方法和3个新类的接口,每个类都继承自接口和stl容器(我知道这不是一个好主意,但我不想编写我自己的list、queue和stack类)。至于异构列表,我认为应该有一个包含数据成员的类,数据成员是接口类的列表或向量。
我不知道如何做的事情是:我如何准确地从stl容器继承泛型类型T。不知道这样的东西是否可以工作:
template <typename T>
class MyList : public list<T>, CommonInterface
我还有一个最大的问题,那就是如何创建异构列表的迭代器,这样它就可以遍历容器的所有元素。我的想法是将所有元素转移到一个向量对象,并使用它的迭代器(我想是一种包装)。
欢迎任何关于这个问题的想法和解决方案。如果这个问题有什么不清楚的地方,我会尽快澄清。
发布于 2020-02-03 00:30:14
这比你想象的要复杂得多。主要原因是C++是静态类型的,因此不适用于这种方法。但一种解决方案是使用静态容器的集合和unordered_map,以便在遍历特定类型的容器时能够选择正确的容器。
https://stackoverflow.com/questions/27671962
复制相似问题