2011-11-11 80 views
0

我想決定是否應該使用某種哈希表。我將會有大量的字符串格式的數據。這裏需要一個哈希表嗎?

我將有很多字符串,將分類,但具有相同的鍵值來訪問它們。

一個例子是,如果一些字符串落入類動物,我會用字符串動物作爲重點,但我想有很多像下面這樣作爲一個例子:

動物狗

動物貓

等等。

,然後也許另一個叫人

人湯姆

人喬

和兒子在

所以我想尋找的動物或人,然後列出每個值,所以對人的搜索會返回湯姆和喬。

你可以有多個相同值的密鑰?自從我不得不考慮散列以來已經很長時間了。

這是一個散列好嗎?如果是,Boost或STL更好?

感謝

我可以添加更多的細節,如果這是沒有意義的,什麼我問。

+0

我認爲這是C++特定的,因爲你提到了Boost和STL。 –

+0

散列地圖用於我所知道的絕大多數語言,而不僅僅是C++;) – GETah

+0

修復了損壞的鏈接 這可能有助於http://techieme.in/hashing-in-detail-part-one – dharam

回答

0

是的,哈希映射支持多個鍵作爲其定義狀態。密鑰內部轉換爲唯一的索引。理想的做法是讓所有的鍵都不同,但除非鍵固定,否則很難實現。 在你的情況下,你有沒有選擇「動物」和「人」作爲鑰匙的限制? 在這種情況下,你可以有一個動物列表(狗,貓,駱駝,鳥......)由一個單一的關鍵字標識:動物,同樣適用於人。

+0

我想到的方式它是,動物將是一個關鍵,人會成爲另一個關鍵,等等......有道理?奇怪的是,我從來沒有必須實施哈希自大學以來,我試圖記住他們如何工作。我讀了一些增強的東西,但他們似乎有點混亂。 –

+1

維基百科是你的朋友:) http://en.wikipedia.org/wiki/Hash_table – GETah

0

嘗試爲每個鍵實現一個哈希表結構,創建一個與其相關的值列表。因此,當您在散列表中搜索一個值時,只需顯示與該鍵關聯的列表。希望能幫助到你!

+0

謝謝,我解決了這個問題,但我甚至不記得我做了什麼。 –