我已经读过某个地方std :: map,当前的编译器,仍然是我们在STL中最有效的关联容器,即使是std :: unsorted_map - 从我在某处读到的,我不知道在哪里 - - 只有当有很多条目时才会在find()上变得更有效率,例如超过40k.
所以现在我不再确定了,因为我总是假设哈希映射更有效率,至少在字符串键的情况下.
简而言之:
如果我必须选择一个具有未知条目计数且使用std :: string作为键的关联容器,那么(至少在理论上)什么(查找速度)更有效(查找速度)选择?
Ker*_* SB 10
个人资料,个人资料
字符串作为键的问题是比较它们非常慢(想想1000字符字符串的最后一个字符的差异).unordered_map带字符串键的优点至少部分来自于必须仅比较固定宽度哈希值的事实,因此在实践中无序映射可能要快得多.
例如,散列实现可以选择仅使用固定数量的展开数字来计算散列值,从而最终在同一个桶中放置一些接近相同的字符串,因此这是一种权衡.您可以编写一组密钥值,两个容器的执行效果都很差,但对于"随机"或"典型"字符串集合,我的赌注是在哈希容器上.
| 归档时间: |
|
| 查看次数: |
1353 次 |
| 最近记录: |