我正在为一个基本的OOP C ++课程编写一个项目。我必须实现Media
类型的对象集(以及派生Book
,Movie
,Album
)。对这些集合的操作是:添加元素,删除某个元素(不一定是第一个或最后一个),搜索集合(搜索可以返回多个结果)。不需要排序,但我认为这将是一个很好的补充。
所以我想知道,哪个是最好的数据结构?简单的数组,向量还是列表? (请注意我必须编写实现,我不能使用std类。) 我实际上并不关心效率或内存消耗,因为我没有处理大量数据,但我仍然能够解释为什么我选择了一个特定的数据结构。
我认为List更适合删除和添加项目,但是vector有一个索引operator [],它对搜索函数很有用(可以返回一个索引数组)。
答案 0 :(得分:0)
如果你不关心任何事情,为什么不简单地使用two dimensional array
或linked list
?我认为在这种情况下它是最好的。
答案 1 :(得分:0)
我会用一个列表来实现它,实现为二叉树 对于搜索功能,您可以返回一个指针数组。
答案 2 :(得分:0)
如果你不关心效率或内存消耗,那么你应该选择最简单的实现,即数组。最后插入新项目,通过将数组中的最终内容移动到间隙中来删除项目。通过遍历整个数组进行搜索。
如果您关心效率,可以实现哈希表或平衡树。
答案 3 :(得分:0)
我认为在你的情况下,最好的容器是地图。每个媒体都有一个id,这是这个媒体的关键(如书籍ISBN),因此你不能保留两本具有相同ID的书籍,而不是地图所具有的。
答案 4 :(得分:0)
作为家庭作业,我建议首先使用简单的链接列表。对于搜索,您可以返回已找到项目的指针或迭代器(如果您的List类与STL容器兼容)。在您的情况下,您有多个子类,您可能需要将基类的指针 - Media放在容器中。如果是,您需要考虑如何管理内存。例如删除元素时释放内存。