「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;
? (OK、正確ではありません。キー k1、k2 があり、k1 < k2 でも k2 < k1 でもない可能性があるため、STL はここで文句を言います。equal multimap
-check を使用して上書きする必要があります。)
または、別の方法で: それらを反復するとき、キーリストがハッシュ値で順序付けられていると想定できますか?