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
是的,映射必须对键执行小于比较。这是字典顺序比较,并且与字符串大小呈线性关系。
这并不影响find方法的时间复杂度,时间复杂度指的是所需的比较次数。它影响常数因子。
这在您的应用程序中是否重要应根据经验确定。