2011-07-30 39 views
8

我正在閱讀我的教科書Data Structures and Algorithms: By Mark Allen Weiss,它說標準庫不包含集合或映射的哈希表實現,而是編譯器可以爲集合和映射類的相同成員函數提供hash_set和hash_map。爲什麼不把hash實現包含在標準庫中呢?這本書是在2006年發佈的,自從將這些實現添加到標準庫之後,是否對C++進行了修改?爲什麼C++標準庫不包含哈希表實現?

+0

我知道馬克個人很棒:D,很可能他們沒有被包含在圖書館裏,因爲他們只會被內部使用。編譯器也更容易優化它們。 –

+0

你是什麼意思只能在內部使用?這真的很棒,你從哪裏知道他的? – tehman

+0

他是我參加學校的首席人員之一。而內部使用,我的意思是它們可能是針對特定於代碼的庫進行優化的尼古拉斯可能有一個觀點。 –

回答

15

你在找什麼叫std::unordered_set/map。這些是C++11的一部分,C++標準的下一個版本(將在幾個月內完成)。它們也在2005年的技術報告1中提供,它是第一個標準與下一個標準庫之間C++標準庫的補充列表。在TR1中,它們位於std::tr1名稱空間中。

升壓實際船舶的implementation of TR1(雖然你不應該使用std::tr1::shared_ptr版本,在常規boost::shared_ptrstd::shared_ptr C++ 11的好得多)。

如果我回想起來,哈希表最初並沒有在C++ 98中引入的原因簡直就是C++標準委員會缺乏時間。他們基本上有一個截止日期爲了運送的東西,哈希表沒有做到這一點。

+1

這些也是自2005年以來作爲TR1庫擴展提供的。 – Blastfurnace

+0

那真是一種不幸。但是,謝謝!來自維基百科:「在C++標準庫中包含散列表(無序關聯容器)是最經常發生的請求之一。」 – tehman

+0

@Blastfurnace:注意。謝謝。 –