User Tools

Site Tools


cpp:stl:map

Differences

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

Link to this comparison view

Next revision
Previous revision
cpp:stl:map [2020/05/31 06:24]
gthanos created
cpp:stl:map [2020/06/01 06:13]
Line 1: Line 1:
-====== std::map και std::multimap ====== 
  
-Ένα [[http://www.cplusplus.com/reference/map/map/|std::map]] αποτελεί ένα σύνολο μοναδικών στοιχείων, όπου κάθε τέτοιο στοιχείο αποτελεί κλειδί για την εύρεση-αντιστοίχιση με ένα άλλο αντικείμενο που ονομάζουμε "τιμή" (//value//). Κάθε κλειδί προσδιορίζει μοναδικά μία "τιμή", η οποία δεν είναι απαραίτητο να είναι μοναδική (οι τιμές μπορεί να επαναλαμβάνονται). 
- 
-Τα στοιχεία-κλειδιά αποθηκεύονται εσωτερικά σε ένα ισοζυγισμένο δέντρο αναζητήσεως (π.χ.[[wp>Red–black_tree]], [[wp>AVL_tree]]), όπως ακριβώς και στο [[cpp:stl:set|std::set]]. 
- 
-Η κατάταξη ενός νέου στοιχείου-κλειδιού γίνεται πάντα μέσω σύγκρισης με τα υπόλοιπα στοιχεία που είναι αποθηκευμένα στην δομή. Για τον λόγο αυτό, απαραίτητη προϋπόθεση για τη λειτουργία του //map// (όπως και στο [[cpp:stl:set|std::set]]) είναι για τον τύπο του κλειδιού να παρέχονται οι τελεστές σύγκρισης %%<%% και %%>%%. Δύο κλειδιά ιδίου τύπου θεωρούνται ίσα σε ένα //map// εάν η παρακάτω λογική έκφραση είναι αληθής. 
- 
-<code cpp> 
-if(!(a < b) && !(b < a)) 
-</code>  
- 
-Ένα [[http://www.cplusplus.com/reference/map/multimap/|std::multimap]] αποτελεί ένα σύνολο από όχι απαραίτητα μοναδικά κλειδιά, τα οποία είναι αποθηκευμένα σε ένα ισοζυγισμένο δέντρο αναζητήσεως (όπως το //map//). Ο τρόπος σύγκρισης και η κατάταξη των στοιχείων είναι όμοια με την επίπλέον σημείωση ότι το δέντρο επιτρέπει την εμφάνιση ενός κλειδιού περισσότερες από μία φορές.  
- 
-Στα παρακάτω σχήματα διακρίνεται η δομή ενός [[http://www.cplusplus.com/reference/map/map|std::map]] και ενός [[http://www.cplusplus.com/reference/map/multimap/|std::multimap]], όπου τα κλειδιά είναι ακέραιοι και οι τιμές είναι αντικείμενα τύπου //std::string//. 
- 
-| {{ :cpp:stl:map01.png? |}}| {{ :cpp:stl:multimap01.png? |}} | 
-|  **Σχήμα 1. std::map**  |  **Σχήμα 2. std::multimap**  | 
cpp/stl/map.txt · Last modified: 2020/06/01 06:13 (external edit)