Tôi rất bối rối với cái tên 'unordered_map'. Tên cho thấy rằng các phím không được đặt hàng cả. Nhưng tôi luôn nghĩ rằng chúng được sắp xếp theo giá trị băm của chúng. Hoặc là sai (vì tên ngụ ý rằng họ không được đặt hàng)?Là unordered_map thực sự không có thứ tự?
Hoặc để đặt nó khác nhau: Đây có phải là
typedef map<K, V, HashComp<K> > HashMap;
với
template<typename T>
struct HashComp {
bool operator<(const T& v1, const T& v2) const {
return hash<T>()(v1) < hash<T>()(v2);
}
};
giống như
typedef unordered_map<K, V> HashMap;
? (OK, không chính xác, STL sẽ phàn nàn ở đây vì có thể có chìa khóa k1, k2 và không k1 < k2 cũng không k2 < k1 Bạn sẽ cần phải sử dụng multimap
và ghi đè lên bằng kiểm tra..)
Hoặc một lần nữa cách khác nhau: Khi tôi lặp qua chúng, tôi có thể giả định rằng danh sách khóa được sắp xếp theo giá trị băm của chúng?
trùng lặp có thể xảy ra của http: //stackoverflow.com/questions/3039823/boostunordered-map-is-ordered – Cogwheel