这个数据的数据结构是什么?

时间:2011-12-11 10:31:34

标签: c++

我正在为一个基本的OOP C ++课程编写一个项目。我必须实现Media类型的对象集(以及派生BookMovieAlbum)。对这些集合的操作是:添加元素,删除某个元素(不一定是第一个或最后一个),搜索集合(搜索可以返回多个结果)。不需要排序,但我认为这将是一个很好的补充。

所以我想知道,哪个是最好的数据结构?简单的数组,向量还是列表? (请注意我必须编写实现,我不能使用std类。) 我实际上并不关心效率或内存消耗,因为我没有处理大量数据,但我仍然能够解释为什么我选择了一个特定的数据结构。

我认为List更适合删除和添加项目,但是vector有一个索引operator [],它对搜索函数很有用(可以返回一个索引数组)。

5 个答案:

答案 0 :(得分:0)

如果你不关心任何事情,为什么不简单地使用two dimensional arraylinked list?我认为在这种情况下它是最好的。

答案 1 :(得分:0)

我会用一个列表来实现它,实现为二叉树 对于搜索功能,您可以返回一个指针数组。

答案 2 :(得分:0)

如果你不关心效率或内存消耗,那么你应该选择最简单的实现,即数组。最后插入新项目,通过将数组中的最终内容移动到间隙中来删除项目。通过遍历整个数组进行搜索。

如果您关心效率,可以实现哈希表或平衡树。

答案 3 :(得分:0)

我认为在你的情况下,最好的容器是地图。每个媒体都有一个id,这是这个媒体的关键(如书籍ISBN),因此你不能保留两本具有相同ID的书籍,而不是地图所具有的。

答案 4 :(得分:0)

作为家庭作业,我建议首先使用简单的链接列表。对于搜索,您可以返回已找到项目的指针或迭代器(如果您的List类与STL容器兼容)。在您的情况下,您有多个子类,您可能需要将基类的指针 - Media放在容器中。如果是,您需要考虑如何管理内存。例如删除元素时释放内存。

相关问题