std :: map :: find性能是否取决于密钥大小?

ida*_*hmu 6 c++ map find time-complexity

说我有以下map定义:

std::map<string,Storage>
Run Code Online (Sandbox Code Playgroud)

其中Storage类实例的字符串表示形式.
我的问题是,尽管它表明map :: find 复杂度在大小上是对数的,但是这个string大小对性能有影响吗?

我这样做的原因map是为了能够快速访问Storage类实例.但是,如果Storage类的字符串表示很长,该怎么办?是否有最大字符串大小,如果超出使用map冗余?

笔记

我的直觉告诉我,如果的字符串表示Storage很长,那么比较类本身使用operator==也会很昂贵.所以不管字符串有多长,我都更好用map

jua*_*nza 3

是的,映射必须对键执行小于比较。这是字典顺序比较,并且与字符串大小呈线性关系。

这并不影响find方法的时间复杂度,时间复杂度指的是所需的比较次数。它影响常数因子。

这在您的应用程序中是否重要应根据经验确定。