30/09/2018, 16:46

So sánh hash table vs hash map?

Mình đang học c++, nhờ mọi người trả lời giúp với. Là sự khác nhau giữa hashtable và hashmap là gì? Bản chất? Cách sử dụng,…

Nguyễn Minh Dũng viết 18:46 ngày 30/09/2018

Hải Huy cho thêm thông tin về hai cái này không? Đạt biết std có hỗ trợ hashmap, tức là unordered_map

http://en.cppreference.com/w/cpp/container/unordered_map

Còn hashtable thì không rõ.

Nguyễn Minh Dũng viết 18:55 ngày 30/09/2018

Nếu em nói tới cái này thì hai cái này là một. hash table là định nghĩa trong ngành của mình nói về việc em có một key, thì sẽ có một value match với nó.

Ví dụ:

key = x
-> value = y

Vấn đề là làm sao để lưu được cặp giá trị này, người ta mới băm cái key x ra một con số, và lưu trữ giá trị y với index = con số đó. Có thể tưởng tượng như vậy. Hash table là cách lưu các cặp giá trị này.

Về hash map mà nói thì trong std không có hash map. Mà ta có thể coi unordered_map là tương đương với hash map. Tham khảo: http://stackoverflow.com/a/5908859/1989112

Về bản chất, unordered_mapmap mà không có sắp xếp. Mọi phần tử nhập vào là nó hash hết, không sắp xếp. unoredered_map ra đời sau map, trong khi map cũng là hash table nhưng có hỗ trợ sắp xếp.

Cái em cần quan tâm không phải là sự khác nhau. Mà em cần biết, hash table là gì, hash là gì. Cái này gọi là kỹ thuật hash.


Phần phụ:

Còn map là thuật ngữ chỉ phương thức hoạt động của một container. Hiểu container như cách quản lý dữ liệu đi, đừng đi sâu vào thời điểm này. Khi ta có cặp key - value ta gọi là pair, khi có nhiều pair cần quản lý, ta dùng map hoặc unordered_map để quản lý. Giống như khi ta có kiểu int, và cần quản lý nhiều int ta có mảng.

Bài liên quan
0