unordered_map不一定比map快

unordered_map是基于Hash的结构,查询速度可以认为是O(1);

map是基于红黑树的结构,查询速度为O(logn)。

一般来说,unordered_map是比map要快的(虽然可能要多浪费一点存储空间),但也有的时候unordered_map并不一定快,这个速度取决于Hash函数和key的值。

我在一个例子中,key使用的是std::hash<std::bitset<n>>(返回值是一个64位的整数),由于这个数本身就是对bitset的hash,这个数非常随机,无论是求Hash还是比较大小,都不是一个简单的事情。在实际测试了几组数据后发现,至少对于几万个数的map,unordered_map和普通的map在速度上没有明显差异,基本在同一个数量级上,两者都有速度更快一些的情况。

除此之外,还听同学说过遇到过类似的情况,只不过不记得他当时用的是什么数据了。

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注

3 + 4 =