我对'unordered_map'这个名字感到很困惑.该名称表明钥匙根本没有订购.但我一直认为它们是按哈希值排序的.或者是错误的(因为这个名字意味着他们没有订购)?
或者说不同:是吗?
typedef map<K, V, HashComp<K> > HashMap;
Run Code Online (Sandbox Code Playgroud)
同
template<typename T>
struct HashComp {
bool operator<(const T& v1, const T& v2) const {
return hash<T>()(v1) < hash<T>()(v2);
}
};
Run Code Online (Sandbox Code Playgroud)
同样的
typedef unordered_map<K, V> HashMap;
Run Code Online (Sandbox Code Playgroud)
?(好吧,不完全是,STL会在这里抱怨,因为可能有键k1,k2,k1 <k2和k2 <k1都没有.你需要使用multimap并覆盖等号检查.)
或者不同的是:当我遍历它们时,我可以假设密钥列表按其哈希值排序吗?