2015-06-15 37 views
-4

unordered_map和C++ STL的地圖之間有什麼區別。 請說明覆雜性和使用。區分unordered_map vs地圖

我用unordered_map替換地圖,我在早些時候得到了接受時間限制超過。

而且我們應該從哪裏使用地圖和地方無序地圖

+2

你可能正在努力使用Google搜索條件,並通過你自己閱讀。 – Christophe

回答

0

std::map保證了O(日誌N)的搜索,插入和刪除的複雜性。它使用比較運算符,迭代按照該比較運算符定義的順序進行。

std::unordered_map只有保證了搜索,插入和刪除,O(N)的複雜性,但你通常希望它是O(M),其中M是(或多或少)個別鍵的大小。假設鍵相對於項目數量很小,它基本上是O(1)。

+0

如果考慮std :: unordered_map中的鍵的大小,那麼你也應該在std :: map中這樣做。複雜度爲O(logN * M),其中M(或多或少)是每個比較的複雜度。 –

+0

@icando:是和否 - 至少在典型情況下,使用地圖,您可以在兩個鍵之間的第一個不匹配時停止比較,而對於無序的地圖,您的散列必須考慮整個鍵時間。從純粹的角度來看,它們都是O(M),但更實際的差別可能是相當大的。 –