簡體   English   中英

該數據的哪種數據結構?

[英]Which data structure for this data?

我正在為基礎OOP C ++課程編寫一個項目。 我必須實現Media類型的對象集(並派生BookMovieAlbum )。 這些集合上的操作是:添加一個元素,刪除某個元素(不一定是第一個或最后一個),搜索集合(搜索可能返回多個結果)。 排序不是必需的,但我認為這將是一個很好的補充。

所以我想知道,哪種數據結構最好? 簡單數組,向量還是列表? (請注意,我必須編寫實現,不能使用std類。)由於我不處理大量數據,因此我實際上並不關心效率或內存消耗,但是我仍然應該能夠解釋為什么選擇一個特定的數據結構。

我認為最好使用List來刪除和添加項目,但是向量具有索引運算符[],該運算符可能對搜索功能有用(它可以返回索引數組)。

如果您什么都不關心,為什么不簡單地使用two dimensional arraylinked list 我認為在這種情況下是最好的。

我會用一個列表實現,實現為二叉樹。
對於搜索功能,您可以返回一個指針數組。

如果您不關心效率或內存消耗,則應該選擇最簡單的實現方法即數組。 在末尾插入新項目,通過將數組中的最后一個項目移到間隙中來刪除項目。 通過遍歷整個數組進行搜索。

如果您確實關心效率,則可以實現哈希表或平衡樹。

我認為,就您而言,最好的容器是地圖。 每種媒體都有一個ID,它是該媒體的密鑰(例如書籍ISBN),因此您不能保留兩張具有相同ID的書籍,而這正是地圖的作用。

作為家庭作業,我建議首先使用一個簡單的鏈表。 為了進行搜索,您可以返回找到的項目的指針或迭代器(如果List類與STL容器兼容)。 而且,如果您有多個子類,則可能需要將基類的指針-Media放入容器中。 如果是,則需要考慮如何管理內存。 例如,刪除元素后釋放內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM