【发布时间】:2014-05-01 16:08:15
【问题描述】:
假设我有以下map 定义:
std::map<string,Storage>
其中 key 是 Storage 类实例的字符串表示形式。
我的问题是,即使它声明 map::find complexity
大小是对数的,string 大小对性能有影响吗?
我有这个map 的原因是为了能够快速访问Storage 类实例。但是,如果Storage 类的字符串表示很长怎么办?是否有一个最大字符串大小,如果超过了会导致使用 map 多余?
注意事项
我的直觉告诉我,如果 Storage 类的字符串表示很长,那么使用 operator== 比较类本身也会很昂贵。所以不管字符串有多长,我最好使用map
【问题讨论】:
-
在
map中,与键相关的计算是比较和排序。如果您有具有相同长前缀的长字符串,这可能需要一些时间。但是,我高度怀疑这将是一个实际的性能瓶颈。别担心。基准、测量、仅在必要时进行优化。
标签: c++ map find time-complexity