我有這樣一段代碼:爲什麼unordered_multiset作品不好等於多鍵
unordered_multiset<int> t;
for (int i = 0; i < 1000000; i++) {
if (i % 10000 == 0)
cout << i << endl;
t.insert(10);
}
所以它只是把很多相等的元素在一個unordered_multiset
。但是我發現我有更多的散列元素會更慢一些呢?我不明白原因。在我看來,在應用哈希函數並找到相等元素的桶(因爲所有相同的元素被組合在一起)之後,只需將它們放在桶的末尾。
那麼這裏有什麼問題?
UDP: 我發現unordered_multiset ::插入功能的描述
單元素插入: 平均情況:不變。 最差情況:容器大小呈線性。
所以,現在的問題可以表述爲:「爲什麼最糟糕的情況是線性的」
我們在哈希中使用的更多元素更慢些,所以我們在這裏討論的是什麼操作?找到或插入? – basav
它是不變的攤銷時間(即'O(1)')來查找存儲桶。但是桶afaik是一個鏈表。 – 101010
我們正在討論插入。它如何在外部工作?爲什麼插入工作如此緩慢? – Nikita