【发布时间】:2011-03-11 17:39:35
【问题描述】:
我对“unordered_map”这个名字感到很困惑。顾名思义,键根本没有排序。但我一直认为它们是按哈希值排序的。还是说错了(因为名字暗示它们不是有序的)?
或者换个说法:这是这个
typedef map<K, V, HashComp<K> > HashMap;
与
template<typename T>
struct HashComp {
bool operator<(const T& v1, const T& v2) const {
return hash<T>()(v1) < hash<T>()(v2);
}
};
同
typedef unordered_map<K, V> HashMap;
? (好吧,不完全是,STL 会在这里抱怨,因为可能有键 k1,k2 并且既不是 k1 multimap 并覆盖相等检查。)
或者再次不同:当我遍历它们时,我可以假设键列表是按它们的哈希值排序的吗?
【问题讨论】:
标签: c++ hashmap unordered-map