2013-08-02 56 views
2

爲什麼我需要實現==運算符和返回size_t的隨機運算符?那麼返回size_t的方法實際返回什麼?爲什麼一個運算符==不足以用於std :: unordered_map? - C++

編輯:當我說隨機操作符時,我並不是說它沒有用處。我的意思是,在我看來,我不明白它有什麼用處,因此是最後一個問題。 7

+1

http://en.wikipedia.org/wiki/Hash_table –

+6

您不需要隨機運算符。你需要實現一個散列函數,爲給定的鍵控類型實例返回一個'size'。這是因爲'unordered_map'是一個哈希映射。 – juanchopanza

+0

雖然它用於什麼? @juanchopanza –

回答

4

散列容器(散列表,散列映射,無序映射)使用散列函數來生成單個整數值來表示條目的索引(或鍵)。這使得我們有了一個快速查找,因爲(假設我們有很好的散列值),我們只需要查看該索引。大多數其他存儲方法意味着比較一堆事物,直到找到正確的元素。

實際上只有兩個有關散列鍵的規則: 1.每次調用散列函數時,您都會得到與給定輸入相同的鍵。 2.不同的輸入值不同 - 它不一定是唯一的,但是從類似的輸入中得到的分佈越多越好。

相關問題