我目前正在思考我可能用於當前項目的數據結構的過程。我不需要刪除項目,因爲我正在加載數據庫,使用它,然後退出程序。唯一的約束與搜索時間有關(內存在第二次,但主要是時間)。關於什麼樣的數據結構用於快速搜索時間的建議C++
關於我打算做什麼的概述。 我正在解析文件並提取用於創建各種對象的信息。 閱讀文件並創建對象之後,我有一組多個對象作爲字符串引用另一個對象。
這裏的目標是要找到其中的淨從一個域轉到另一個
如:文本輸入文件:
module Blabla
netTomodule Foo
domain 1
..../*Other parameters of the module*/
end module
module Foo
netTomodule Blabla
netTomodule Foo2
domain 2
..../*Other parameters of the module*/
end module
module Foo2
netTomodule Foo
domain 2
..../*Other parameters of the module*/
end module
我得到3模塊對象foo foo2的和BLABLA和閱讀之後其屬性如下:
class Module{
private :
string name;
int domain;
netlist * mynetlist;
...
}
我的意見,我想對他諮詢的事情:
思考之後,我認爲我最好的拍攝是:
- 當讀取文件並提取信息,我應該創建模塊的鏈接列表。
- 然後用我讀過的模塊的數量,我創建一個數組,它的大小是它的兩倍。
- 對於每個模塊,我使用散列函數來散列模塊名稱,並將指針放在數組中的給定索引處
- 現在,當我想要找到一個模塊時,我只需要計算散列值,並得到指針在給定的指數(或增量,如果它不是好的模塊,因爲之前在製作陣列時發生衝突)
這基本上是散列表或至少我知道的一個實現的一個哈希表從我的clasess。
我的問題是這是一個好主意嗎?是否有一個我可以使用的哈希表庫?(我聽說過尋找unordered_map和地圖,但我不知道它是否適合我的需求)
這是一個巨大的文字,所以我希望它足夠詳細,所以謝謝你,如果你有勇氣閱讀一切!
很難理解你的問題,因爲它有很多不相關的信息和重複。嘗試專注於基本要求並避免空洞的短語(「你應該知道的事情就是......」)。 – 2011-05-06 09:19:49
如果不知道你想要用你的模塊執行什麼操作,很難回答。你試圖解決的總體問題是什麼? – 2011-05-06 09:23:41
我已編輯,使其更清晰,這裏的目標是要找到哪個網絡從一個域到另一個域(即有一個淨網絡Foo和Blabla跨域從2到1) – djfoxmccloud 2011-05-06 09:24:17