User Tools

Site Tools


cpp:stl:unordered_map

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
cpp:stl:unordered_map [2020/06/01 06:49] gthanoscpp:stl:unordered_map [2020/06/01 07:04] – [Επίδοσης της δομής] gthanos
Line 14: Line 14:
  
 Η επίδοση της δομής είναι ανάλογη των δομών [[cpp:stl:unordered_set|std::unordered_set και std::unordered_multiset]] λαμβάνοντας υπόψη τα στοιχεία-κλειδιά των //std::unordered_map// και //std::unordered_multimap//. Η επίδοση της δομής είναι ανάλογη των δομών [[cpp:stl:unordered_set|std::unordered_set και std::unordered_multiset]] λαμβάνοντας υπόψη τα στοιχεία-κλειδιά των //std::unordered_map// και //std::unordered_multimap//.
 +
 +===== Περισσότερα για τις κλάσεις std::unordered_map και std::unordered_multimap =====
 +
 +H δήλωση της κλάσης //std::unordered_map// έχει ως εξής:
 +
 +<code cpp>
 +template < class Key,                                    // unordered_map::key_type
 +           class T,                                      // unordered_map::mapped_type
 +           class Hash = hash<Key>,                       // unordered_map::hasher
 +           class Pred = equal_to<Key>,                   // unordered_map::key_equal
 +           class Alloc = allocator< pair<const Key,T> >  // unordered_map::allocator_type
 +           > class unordered_map;
 +</code>
 +
 +Από την παραπάνω δήλωση της κλάσης παρατηρούμε ότι εκτός από το κλειδί ''Key'' και τον τύπο ''T'' που αντιστοιχεί στην τιμή κάθε ζεύγους κλειδιού-τιμής, κατά την δήλωση της κλάσης απαιτείται η  δήλωση δύο επιπλέον κλάσεων //α)// της κλάσης ''Hash=hash<Key>'' και //β)// της κλάσης ''Pred=equal_to<Key>''. Οι κλάσεις αυτές λειτουργούν ως συναρτήσεις (δες σχετικό παράδειγμα στη συνέχεια). Η πρώτη υλοποιεί το //hash function// για την τοποθέτηση σε μία θέση του //hash table// (μία θέση ονομάζεται και //bucket//) και η δεύτερη ελέγχει την ισότητα μεταξύ δύο αντικειμένων του ιδίου τύπου για την αναζήτηση μέσα στη λίστα του κάθε //bucket//
 +
 +Για τους βασικούς τύπους δεδομένων οι παραπάνω κλάσεις υλοποιούνται μέσω των //templated// κλάσεων [[http://www.cplusplus.com/reference/functional/hash/|std::hash]] και [[http://www.cplusplus.com/reference/functional/equal_to/|std::equal_to]]. Για δικούς σας τύπους δεδομένων καλείστε να υλοποιήσετε εσείς τις συγκεκριμένες συναρτήσεις.
 +
 +
 +
 +
  
cpp/stl/unordered_map.txt · Last modified: 2020/06/01 06:29 (external edit)