2015-06-15 38 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),但更实际的差别可能是相当大的。 –