map.find()时间复杂度

时间:2013-01-31 18:39:35

标签: map vector big-o time-complexity

如果我有地图:

map myMap<string,vector<int>>

最好的,平均的和最差的时间复杂度是什么,找到一个密钥,然后迭代向量来找到一个特定的int?

我知道map.find()方法是O(log n),但是我必须在向量中搜索int才能改变时间复杂度吗?

由于

1 个答案:

答案 0 :(得分:0)

如果您声明这是C ++,那会有所帮助。 std :: map通常实现为二叉树,因此查找操作的O(log(n))来自于此。

它是O(log(n)+ m),其中n是地图的大小,m是(每个)向量的大小。我假设您只进行一次查找,然后遍历与您的密钥对应的整个向量。

由于log(n)增长缓慢,除非你有非常小的向量,log(n)应该是&lt; m,因此你的算法应该是O(m)。