映射与无序映射的时间复杂度分析 我以前认为,无序的映射比C++中的映射复杂得多。但今天当我在做一个问题(莫莉的化学制品)时,我超过了时间限制。经过大量的猜测工作(因为我认为我的解决方案是正确的),我尝试使用一个地图而不是一个无序的_地图,令人惊讶的是,我接受了它。在某些情况下,由于大量碰撞,无序的_地图可能有一个大的常数乘数,这将增加其实际复杂性,使其大于地图(欢迎更正)

映射与无序映射的时间复杂度分析 我以前认为,无序的映射比C++中的映射复杂得多。但今天当我在做一个问题(莫莉的化学制品)时,我超过了时间限制。经过大量的猜测工作(因为我认为我的解决方案是正确的),我尝试使用一个地图而不是一个无序的_地图,令人惊讶的是,我接受了它。在某些情况下,由于大量碰撞,无序的_地图可能有一个大的常数乘数,这将增加其实际复杂性,使其大于地图(欢迎更正),c++,dictionary,maps,time-complexity,c++14,C++,Dictionary,Maps,Time Complexity,C++14,我搜索了很多地图和无序地图的不同功能的时间复杂度,但没有找到合适的内容,因为我想知道什么时候应该使用地图或无序地图。有人能解释一下地图和无序地图在时间复杂度方面的区别吗。无序地图 < C++ > < < /p> > < 无序的映射> > 在最坏的情况下,unordered_-map中每个操作符的时间复杂度是O(n)。如果所有元素都位于同一位置,则会发生这种情况 通过跟踪编译器的代码可以构造一个特殊的测试数据,就像Codeforces展示了如何在gcc上构造这样的测试数据一样 地图 > ISO

我搜索了很多地图和无序地图的不同功能的时间复杂度,但没有找到合适的内容,因为我想知道什么时候应该使用地图或无序地图。有人能解释一下地图和无序地图在时间复杂度方面的区别吗。

无序地图 < C++ > < < /p> > < <代码>无序的映射> <代码> > 在最坏的情况下,
unordered_-map
中每个操作符的时间复杂度是
O(n)
。如果所有元素都位于同一位置,则会发生这种情况

通过跟踪编译器的代码可以构造一个特殊的测试数据,就像Codeforces展示了如何在gcc上构造这样的测试数据一样

地图 <> > ISO/C++中的<代码>图>代码>,

map
的时间复杂度保证为
O(logn)

unordered\u-map < C++ > < < /p> > < <代码>无序的映射> <代码> > 在最坏的情况下,
unordered_-map
中每个操作符的时间复杂度是
O(n)
。如果所有元素都位于同一位置,则会发生这种情况

通过跟踪编译器的代码可以构造一个特殊的测试数据,就像Codeforces展示了如何在gcc上构造这样的测试数据一样

地图 <> > ISO/C++中的<代码>图>代码>,


map
的时间复杂度保证为
O(logn)

map后面的数据结构是rb树,而无序的_-map使用哈希表作为其数据结构。所以我们可以通过分析rb树和哈希表来分析这两个容器

在映射中查找/插入元素:O(日志n)
在无序映射中查找/插入元素:O(1)

映射后面的数据结构是rb树,而无序映射使用哈希表作为其数据结构。所以我们可以通过分析rb树和哈希表来分析这两个容器

在映射中查找/插入元素:O(日志n)
在无序映射中查找/插入元素:O(1)

有序映射
以排序方式保留键(顾名思义)。这些工具的时间复杂度取决于它们的使用位置(插入的频率、查找的频率等)。这是否回答了您的问题?谢谢你建议我“鬼”。但我想知道使用地图和未重新绘制地图在时间复杂度方面的区别。简单地说,请告诉我在地图中插入、搜索、查找的时间复杂性,我确实遇到了同样的问题,因为同一个存储桶中的元素太多。
有序地图
以排序方式保留键(顾名思义)。这些工具的时间复杂度取决于它们的使用位置(插入的频率、查找的频率等)。这是否回答了您的问题?谢谢你建议我“鬼”。但我想知道使用地图和未重新绘制地图在时间复杂度方面的区别。简单地说,请告诉我在地图中插入、搜索、查找的时间复杂性。由于同一个桶中的元素太多,我确实遇到了同一个问题。
+------------------+-----------------------------------------------------+
|    Expression    |                     Complexity                      |
+------------------+-----------------------------------------------------+
| a_­uniq.insert(t) | Average case O(1), worst case O(a_uniq.size()).     |
| a.erase(k)       | Average case O(a.count(k)), worst case O(a.size()). |
| b.find(k)        | Average case O(1), worst case O(b.size()).          |
+------------------+-----------------------------------------------------+
+------------------+--------------------------+
|     Expression   |        Complexity        |
+------------------+--------------------------+
| a_­uniq.​insert(​t) | logarithmic              |
| a.erase(k)       | log(a.size())+a.count(k) |
| b.find(k)        | logarithmic              |
+------------------+--------------------------+