C++容器的异构列表

Heterogeneous list of containers in C++

本文关键字:异构 列表 C++      更新时间:2023-10-16

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

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

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

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

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

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

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

请参阅此存储库和示例 https://github.com/hosseinmoein/DataFrame