unordered_map和C++ STL的地图之间有什么区别。 请说明复杂性和使用。区分unordered_map vs地图
我用unordered_map替换地图,我在早些时候得到了接受时间限制超过。
而且我们应该从哪里使用地图和地方无序地图
unordered_map和C++ STL的地图之间有什么区别。 请说明复杂性和使用。区分unordered_map vs地图
我用unordered_map替换地图,我在早些时候得到了接受时间限制超过。
而且我们应该从哪里使用地图和地方无序地图
std::map
保证了O(日志N)的搜索,插入和删除的复杂性。它使用比较运算符,迭代按照该比较运算符定义的顺序进行。
std::unordered_map
只有保证了搜索,插入和删除,O(N)的复杂性,但你通常希望它是O(M),其中M是(或多或少)个别键的大小。假设键相对于项目数量很小,它基本上是O(1)。
如果考虑std :: unordered_map中的键的大小,那么你也应该在std :: map中这样做。复杂度为O(logN * M),其中M(或多或少)是每个比较的复杂度。 –
@icando:是和否 - 至少在典型情况下,使用地图,您可以在两个键之间的第一个不匹配时停止比较,而对于无序的地图,您的散列必须考虑整个键时间。从纯粹的角度来看,它们都是O(M),但更实际的差别可能是相当大的。 –
你可能正在努力使用Google搜索条件,并通过你自己阅读。 – Christophe