我有一个问题hash_map,并map在C++中.我明白这map是STL,但hash_map不是标准.这两者有什么区别?
Joe*_*Joe 132
它们以非常不同的方式实现.
hash_map(unordered_map在TR1和Boost中;使用它们)使用哈希表,其中密钥被散列到表中的一个槽中,并且值存储在与该键相关联的列表中.
map 实现为平衡二叉搜索树(通常是红/黑树).
一个unordered_map应该给表现稍好取得集合的已知元素,但map将有更多的有用的特性(例如它的排序顺序存储,这使得遍历从开始到结束). unordered_map插入和删除比a快map.
小智 35
hash_map是许多库实现提供的常见扩展.这就是为什么它被重命名为unordered_map当它作为TR1的一部分被添加到C++标准时.map通常使用平衡的二叉树(如红黑树)实现(当然实现方式不同). hash_map并且unordered_map通常用哈希表实现.因此不保持订单. unordered_mapinsert/delete/query将为O(1)(常量时间),其中map将为O(log n),其中n是数据结构中的项数.所以unordered_map更快,如果你不关心项目的顺序应该是首选map.有时你想维持秩序(按键排序),map这是选择.
R S*_*hko 14
一些关键差异在于复杂性要求.
映射需要O(log(N))时间才能插入和查找.
对于插入和查找,unordered_map要求"平均"时间为O(1),但允许最坏情况时间为O(N).
因此,通常,unordered_map会更快,但根据您存储的密钥和散列函数,可能会变得更糟.
| 归档时间: |
|
| 查看次数: |
147366 次 |
| 最近记录: |