cpp:stl:set
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
cpp:stl:set [2020/05/30 19:40] – [Παράδειγμα ένθεσης και διάτρεξης ενός set] gthanos | cpp:stl:set [2023/05/30 11:04] (current) – [Παράδειγμα ένθεσης και διάτρεξης ενός set] gthanos | ||
---|---|---|---|
Line 3: | Line 3: | ||
Ένα [[http:// | Ένα [[http:// | ||
- | Η κατάταξη ενός νέου στοιχείου γίνεται πάντα μέσω σύγκρισης με τα υπόλοιπα στοιχεία που είναι αποθηκευμένα στην δομή. Για τον λόγο αυτό, απαραίτητη προϋπόθεση για τη λειτουργία του //set// είναι για τους τύπους δεδομένων που αποθηκεύονται να παρέχονται οι τελεστές σύγκρισης %%<%% και %%>%%. Δύο στοιχεία ιδίου τύπου θεωρούνται ίσα σε ένα //set// εάν η παρακάτω λογική έκφραση είναι αληθής. | + | Η κατάταξη ενός νέου στοιχείου γίνεται πάντα μέσω σύγκρισης με τα υπόλοιπα στοιχεία που είναι αποθηκευμένα στην δομή. Για τον λόγο αυτό, απαραίτητη προϋπόθεση για τη λειτουργία του //set// είναι για τους τύπους δεδομένων που αποθηκεύονται να παρέχονται ο τελεστής σύγκρισης %%<%%. Δύο στοιχεία ιδίου τύπου θεωρούνται ίσα σε ένα //set// εάν η παρακάτω λογική έκφραση είναι αληθής. |
<code cpp> | <code cpp> | ||
Line 9: | Line 9: | ||
</ | </ | ||
- | Ένα [[http:// | + | Ένα [[http:// |
- | Στα παρακάτω σχήματα διακρίνεται η δομή ενός [[http:// | + | Στα παρακάτω σχήματα διακρίνεται η δομή ενός [[http:// |
| {{ : | | {{ : | ||
Line 65: | Line 65: | ||
=== Παράδειγμα 2ο - Student === | === Παράδειγμα 2ο - Student === | ||
- | Κατεβάστε την κλάση //Student// από [[https:// | + | Κατεβάστε την κλάση //Student// από [[https:// |
<code cpp student_set.cpp> | <code cpp student_set.cpp> | ||
Line 96: | Line 96: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | <WRAP todo 80% center round> | ||
+ | Αλλάξτε τον //STL container// από // | ||
+ | </ | ||
<WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
Line 101: | Line 105: | ||
</ | </ | ||
- | <WRAP todo 80% center round> | + | ===== Οι συναρτήσεις lower_bound, |
- | Αλλάξτε τον | + | |
- | </WRAP> | + | Οι κλάσεις //std::set// και //std::multiset// διαθέτουν τις συναρτήσεις [[http://www.cplusplus.com/ |
+ | |||
+ | * **iterator lower_bound (const value_type& | ||
+ | * **iterator upper_bound (const value_type& | ||
+ | * **pair< | ||
+ | |||
+ | === Παράδειγμα upper_bound, | ||
+ | |||
+ | <code cpp string_multiset.cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | template< | ||
+ | void print(std:: | ||
+ | for(auto it = s.cbegin(); it!=s.cend(); | ||
+ | std::cout << *it << " "; | ||
+ | std::cout << std:: | ||
+ | } | ||
+ | |||
+ | int main(int argc, char *argv[]) { | ||
+ | std:: | ||
+ | |||
+ | strset.emplace(" | ||
+ | strset.emplace(" | ||
+ | strset.emplace(" | ||
+ | strset.emplace(" | ||
+ | strset.emplace(" | ||
+ | strset.emplace(" | ||
+ | strset.emplace(" | ||
+ | strset.emplace(" | ||
+ | strset.emplace(" | ||
+ | strset.emplace(" | ||
+ | strset.emplace(" | ||
+ | |||
+ | print(strset); | ||
+ | |||
+ | auto lower_it = strset.lower_bound(" | ||
+ | auto upper_it = strset.upper_bound(" | ||
+ | |||
+ | strset.erase(lower_it, | ||
+ | print(strset); | ||
+ | |||
+ | auto range = strset.equal_range(" | ||
+ | strset.erase(range.first, | ||
+ | print(strset); | ||
+ | |||
+ | //Searching for mango again... | ||
+ | range = strset.equal_range(" | ||
+ | if(range.first == range.second) | ||
+ | std::cout << " | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </code> | ||
cpp/stl/set.1590867613.txt.gz · Last modified: 2020/05/30 18:40 (external edit)