2013-12-10 120 views
1

我有一組數據對:(鍵,值)。 它們的密鑰是唯一的,值(不會有兩個相等的值,也不是兩個相等的密鑰)。像這樣...我應該使用哪些鍵值數據結構?快速檢索值,並通過密鑰快速檢索

dataStructure = {"ph", 0}, {"f", 1}, {"o", 2}, {"th", 3} ...

(該指數是任意的,但它必須是可訪問),

是否有任何數據結構(有效的)允許我檢索項目的關鍵給出一個值?像這樣: dataStructure.getByValue("ph") -> 0dataStructure.getByKey(0) -> "ph"

我一直在閱讀有關包含HashMap,但是這不是我要找的結構:包含HashMap是不唯一的價值的物品,所以我不能取回鑰匙給定值。

我想用這個作爲編碼器,「photho」會被編碼成0230,這將再次被解碼爲「photho」。

我想知道的數據結構的名字......沒關係的語言......

回答

4

Boost. bimap應該適合你。

Boost.Bimap是C++的雙向映射庫。使用Boost.Bimap 您可以創建關聯容器,其中這兩種類型都可以用作關鍵字 。 bimap可以被認爲是 std :: map和std :: map的組合。

1

使用兩maps。將它們組合到一個類中,以便您可以在同一個對象上使用兩個方法get

+0

這是一個很好的答案......但我選擇Johan的答案,因爲他給了我數據結構的名稱 – Bengalaa