C++ Διάνυσμα ζευγών

C Dianysma Zeugon



Στην C++, ένα διάνυσμα είναι ένα ευέλικτο κοντέινερ που μπορεί να αλλάξει δυναμικά το μέγεθός του που επιτρέπει τον αποτελεσματικό χειρισμό των στοιχείων. Ενώ ένα ζεύγος είναι ένα απλό δοχείο που μπορεί να χωρέσει δύο ετερογενή αντικείμενα που παρέχει ένα βολικό μέσο για τη συσχέτιση και τη διαχείριση των σχετικών δεδομένων. Όταν αυτά τα ζεύγη οργανώνονται σε ένα διάνυσμα, οι προγραμματιστές αποκτούν τη δυνατότητα να δημιουργήσουν τις δυναμικές συλλογές ζευγών κλειδιών-τιμών ή οποιονδήποτε άλλο συνδυασμό δύο διακριτών στοιχείων.

Αυτή η δομή δεδομένων είναι ιδιαίτερα χρήσιμη σε σενάρια όπου τα στοιχεία πρέπει να αποθηκευτούν ως ζεύγη, όπως όταν πρόκειται για ζεύγη κλειδιού-τιμής ή αντιπροσωπεύουν τις σχέσεις μεταξύ οντοτήτων. Σε αυτό το άρθρο, θα διερευνήσουμε την έννοια ενός διανύσματος ζευγών C++ και θα εξερευνήσουμε τα διάφορα παραδείγματα για να επεξηγήσουμε τις πρακτικές του εφαρμογές.







Παράδειγμα 1: Βασική χρήση: Επανάληψη σε ένα διάνυσμα ζευγών

Ας εξετάσουμε ένα βασικό παράδειγμα όπου δημιουργούμε ένα διάνυσμα ζευγών που αντιπροσωπεύουν τα ονόματα των μαθητών και τις αντίστοιχες ηλικίες τους. Η επανάληψη σε ένα διάνυσμα ζευγών είναι παρόμοια με την επανάληψη σε ένα κανονικό διάνυσμα. Κάποιος μπορεί να χρησιμοποιήσει είτε τους επαναλήπτες είτε τους βρόχους «for» που βασίζονται σε εύρος για να ανακτήσει κάθε ζεύγος μέσα στο διάνυσμα.



Αυτό το παράδειγμα παρουσιάζει τη σύνταξη για ένα 'διάνυσμα ζευγών' σε ένα ουσιαστικό πλαίσιο.



#include
#include <διάνυσμα>
#include

int main ( ) {

std:: vector < std::pair < std::string, int >> studentData;

studentData.push_back ( std::make_pair ( 'Αδάμ' , είκοσι ) ) ;
studentData.push_back ( std::make_pair ( 'Νομοσχέδιο' , 22 ) ) ;
studentData.push_back ( std::make_pair ( 'Κάρολος' , είκοσι ένα ) ) ;

std::cout << «Στοιχεία μαθητών: \n ' ;
Για ( const auto & μαθητής: studentData ) {
std::cout << 'Ονομα: ' << μαθητής.πρώτον << ', Ηλικία: ' << μαθητής.δεύτερος << std::endl;
}

ΕΠΙΣΤΡΟΦΗ 0 ;
}


Σε αυτό το απόσπασμα κώδικα C++, ξεκινάμε συμπεριλαμβάνοντας τρία βασικά αρχεία κεφαλίδας: ' ' για λειτουργίες εισόδου και εξόδου, '' για χρήση του διανυσματικού κοντέινερ και '' για πρόσβαση στο 'std:: πρότυπο ζευγαριού. Αυτές οι κεφαλίδες μας δίνουν τη δυνατότητα να χρησιμοποιήσουμε τις λειτουργίες που είναι απαραίτητες για το πρόγραμμά μας.





Προχωρώντας προς τα εμπρός, μέσα στη συνάρτηση main(), δηλώνουμε ένα διάνυσμα με το όνομα “studentData” χρησιμοποιώντας το κοντέινερ “std::vector”. Αυτό το διάνυσμα έχει σχεδιαστεί για να αποθηκεύει τα ζεύγη όπου κάθε ζεύγος ενσωματώνει το όνομα ενός μαθητή (που αντιπροσωπεύεται ως 'std::string') και την ηλικία τους (ένας 'int' ακέραιος). Στη συνέχεια, συμπληρώνουμε το διάνυσμα «StudentData» με τρία ζεύγη. Χρησιμοποιώντας τη συνάρτηση «push_back», προστίθενται ζεύγη στο τέλος του διανύσματος, προσαρμόζοντας δυναμικά το μέγεθός του. Στη συνέχεια, ένας βρόχος επαναλαμβάνεται μέσω των 'studentData', εξάγοντας και εκτυπώνοντας το όνομα και την ηλικία κάθε μαθητή. Η έξοδος εμφανίζει 'Student Data:' που δίνει έμφαση στη δομημένη αναπαράσταση. Τα ονόματα και οι ηλικίες των μαθητών εκτυπώνονται χωριστά, παρουσιάζοντας με σαφήνεια τα αποθηκευμένα δεδομένα.



Παράδειγμα 2: Ταξινόμηση ενός διανύσματος ζευγών

Η ταξινόμηση ενός διανύσματος ζευγών είναι μια κοινή λειτουργία, ειδικά όταν έχουμε να κάνουμε με συσχετίσεις κλειδιού-τιμής. Η συνάρτηση 'std:: sort' από την κεφαλίδα ' ' μπορεί να χρησιμοποιηθεί για αυτό το σκοπό. Ας δούμε πώς να ταξινομήσετε ένα διάνυσμα ζευγών με βάση το πρώτο και το δεύτερο στοιχείο:

#include
#include <διάνυσμα>
#include <αλγόριθμος>

int main ( ) {

std:: vector < std::pair < std::string, int >> πληροφορίες?

info.push_back ( std::make_pair ( 'Πέτρος' , δεκαπέντε ) ) ;
info.push_back ( std::make_pair ( 'Ντόρα' , 29 ) ) ;
info.push_back ( std::make_pair ( 'Χάνα' , είκοσι ) ) ;

std::cout << 'Αρχικές πληροφορίες: \n ' ;
Για ( const auto & είσοδος: πληροφορίες ) {
std::cout << 'Ονομα: ' << είσοδος.πρώτα << ', Ηλικία: ' << είσοδος.δεύτερος << std::endl;
}


std:: sort ( info.begin ( ) , info.end ( ) ) ;

std::cout << ' \n Ταξινομημένα στοιχεία: \n ' ;
Για ( const auto & είσοδος: πληροφορίες ) {
std::cout << 'Ηλικία:' << είσοδος.δεύτερος << ', Ονομα: ' << είσοδος.πρώτα << std::endl;
}

ΕΠΙΣΤΡΟΦΗ 0 ;
}


Σε αυτό το παράδειγμα κώδικα C++, εργαζόμαστε με ένα διάνυσμα ζευγών για να αποθηκεύσουμε και να χειριστούμε τα δεδομένα που σχετίζονται με άτομα, συγκεκριμένα τα ονόματα και τις ηλικίες τους. Αρχικοποιούμε ένα διάνυσμα με το όνομα “info of pairs” μέσα στη συνάρτηση main(). Στη συνέχεια, συμπληρώνουμε αυτό το διάνυσμα με τρία ζεύγη, το καθένα από τα οποία περιέχει το όνομα και την ηλικία ενός ξεχωριστού ατόμου, χρησιμοποιώντας τη συνάρτηση 'push_back' και 'std::make_pair' για αποτελεσματική δημιουργία ζεύγους.

Εξάγουμε τις 'Αρχικές πληροφορίες' στην κονσόλα. Αυτό περιλαμβάνει την επανάληψη μέσω του διανύσματος «πληροφοριών» και την εκτύπωση των στοιχείων κάθε ζεύγους. Στη συνέχεια, χρησιμοποιούμε τον αλγόριθμο 'std:: sort' για να αναδιατάξουμε το διάνυσμα 'info' με βάση τον προεπιλεγμένο τελεστή σύγκρισης για ζεύγη που συγκρίνει το πρώτο στοιχείο κάθε ζεύγους (σε αυτήν την περίπτωση, τα ονόματα). Μετά τη λειτουργία ταξινόμησης, επαναλαμβάνουμε ξανά το τροποποιημένο διάνυσμα «πληροφορίες» εκτυπώνοντας τις ταξινομημένες πληροφορίες. Αυτή τη φορά, η έξοδος δίνει έμφαση στην πρώτη παραγγελία, απεικονίζοντας το αποτέλεσμα της διαδικασίας ταξινόμησης.

Παράδειγμα 3: Συνδυασμός των διανυσμάτων διαφορετικών τύπων

Μπορεί να συναντήσετε κάποιες καταστάσεις όπου πρέπει να συνδυάσετε μια πληροφορία από δύο διανύσματα. Ένα διάνυσμα ζευγών μπορεί να βοηθήσει στη διατήρηση της συσχέτισης μεταξύ στοιχείων από τα δύο διανύσματα.

#include
#include <διάνυσμα>

int main ( ) {
std:: vector < std::string > πόλεις = { 'Νέα Υόρκη' , 'Παρίσι' , 'Τόκιο' } ;
std:: vector < ενθ > πληθυσμοί = { 8175133 , 2140526 , 37435191 } ;

std:: vector < std::pair < std::string, int >> cityPopulationPairs;

Για ( μέγεθος_t i = 0 ; Εγώ < std::min ( πόλεις.μέγεθος ( ) , πληθυσμοί.μέγεθος ( ) ) ; ++i ) {
cityPopulationPairs.push_back ( { πόλεις [ Εγώ ] , πληθυσμοί [ Εγώ ] } ) ;
}

std::cout << 'Ζεύγη πόλης-πληθυσμού:' << std::endl;
Για ( const auto & ζευγάρι : cityPopulationPairs ) {
std::cout << 'Πόλη: ' << ζευγάρι.πρώτον << ', Πληθυσμός: ' << ζευγάρι.δεύτερο << std::endl;
}

ΕΠΙΣΤΡΟΦΗ 0 ;
}


Στη συνάρτηση 'κύρια' του κώδικα, δηλώνονται δύο διανύσματα: 'πόλεις' για την αποθήκευση των ονομάτων των πόλεων και 'πληθυσμοί' για αποθήκευση των αντίστοιχων τιμών πληθυσμού.

Ένα τρίτο διάνυσμα, το 'cityPopulationPairs', ορίζεται για την αποθήκευση των ζευγών πόλεων και των αντίστοιχων πληθυσμών τους. Κάθε ζεύγος είναι 'std::pair' όπου το 'std::string' αντιπροσωπεύει το όνομα της πόλης και το 'int' αντιπροσωπεύει τον πληθυσμό. Στη συνέχεια χρησιμοποιούμε μια επανάληψη βρόχου 'for' στα διανύσματα (πόλεις και πληθυσμούς) χρησιμοποιώντας 'std::min' για να διασφαλίσουμε ότι ο βρόχος δεν έχει πρόσβαση στα στοιχεία πέρα ​​από το μικρότερο από τα δύο μεγέθη διανυσμάτων. Μέσα στον βρόχο, δημιουργούνται ζεύγη πληροφοριών πόλης-πληθυσμού και προσαρτώνται στο διάνυσμα 'cityPopulationPairs'.

Μετά το συνδυασμό των πληροφοριών, ένας άλλος βρόχος «για» χρησιμοποιείται για επανάληψη μεταξύ των ζευγών που είναι αποθηκευμένα στα «cityPopulationPairs». Στη συνέχεια, τα συνδυασμένα δεδομένα εμφανίζονται στην τυπική έξοδο χρησιμοποιώντας «std::cout», αντιπροσωπεύοντας σαφώς κάθε πόλη και τον αντίστοιχο πληθυσμό της.

Παράδειγμα 4: Εύρεση της μέγιστης και της ελάχιστης τιμής

Ο προσδιορισμός των ελάχιστων και μέγιστων τιμών σε ένα σύνολο δεδομένων είναι μια κοινή απαίτηση σε αλγοριθμικές και στατιστικές πράξεις. Μπορούμε να χρησιμοποιήσουμε ένα διάνυσμα ζευγών για να παρακολουθούμε τόσο τις μέγιστες όσο και τις ελάχιστες τιμές σε μια ακολουθία:

#include
#include <διάνυσμα>
#include <αλγόριθμος>

int main ( ) {
std:: vector < ενθ > αριθμοί = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;

std:: vector < std::pair < εσύ, εσύ >> minMaxPairs;

std:: sort ( αριθμοί.αρχίζουν ( ) , αριθμοί.τέλος ( ) ) ;

minMaxPairs.push_back ( { αριθμοί.μέτωπο ( ) , αριθμοί.πίσω ( ) } ) ;

std::cout << 'Ζεύγη Min-Max:' << std::endl;
Για ( const auto & ζεύγος: minMaxPairs ) {
std::cout << 'Ελάχιστο:' << ζευγάρι.πρώτον << ', Μέγιστη: ' << ζευγάρι.δεύτερο << std::endl;
}

ΕΠΙΣΤΡΟΦΗ 0 ;
}


Ο παρεχόμενος κώδικας C++ δείχνει τη διαδικασία εύρεσης των ελάχιστων και μέγιστων τιμών σε ένα διάνυσμα ακεραίων αριθμών και στη συνέχεια αποθήκευση αυτών των τιμών σε ένα διάνυσμα ζευγών. Ένα διάνυσμα που ονομάζεται 'αριθμοί' αρχικά δηλώνεται και αρχικοποιείται με ένα σύνολο ακεραίων. Για να προσδιορίσει αποτελεσματικά τις ελάχιστες και μέγιστες τιμές στο σύνολο δεδομένων, το πρόγραμμα χρησιμοποιεί τη συνάρτηση «std:: sort» από τη βιβλιοθήκη αλγορίθμων.

Αυτή η συνάρτηση στοχεύει να τακτοποιήσει τα στοιχεία σε αύξουσα σειρά, απλοποιώντας τη διαδικασία προσδιορισμού τόσο της ελάχιστης όσο και της μέγιστης τιμής στο σύνολο δεδομένων. Η λειτουργία ταξινόμησης εφαρμόζεται στο διάνυσμα 'αριθμοί' χρησιμοποιώντας ως παραμέτρους εύρους τα numbers.begin() και numbers.end(). Μετά το βήμα ταξινόμησης, το πρόγραμμα δημιουργεί ένα διάνυσμα ζευγών, «minMaxPairs», για να αποθηκεύσει τις υπολογιζόμενες ελάχιστες και μέγιστες τιμές. Στη συνέχεια, η συνάρτηση 'push_back' χρησιμοποιείται για την προσθήκη ενός μόνο ζεύγους που περιέχει το πρώτο (ελάχιστο) και το τελευταίο (μέγιστο) στοιχείο του διανύσματος ταξινομημένων αριθμών. Τέλος, το πρόγραμμα βγάζει το αποτέλεσμα επαναλαμβάνοντας μέσα από το διάνυσμα «minMaxPairs» και εμφανίζοντας τις ελάχιστες και μέγιστες τιμές.

συμπέρασμα

Συμπερασματικά, το διάνυσμα ζευγών C++ αναδύεται ως μια ισχυρή και ευέλικτη δομή δεδομένων, προσθέτοντας ένα επίπεδο ευελιξίας στις εργασίες προγραμματισμού. Μέσα από μια λεπτομερή εξερεύνηση της σύνταξης και των πρακτικών εφαρμογών του, είδαμε πώς αυτό το κοντέινερ βοηθά στην οργάνωση των συσχετίσεων κλειδιού-τιμής, στο συνδυασμό των πληροφοριών από διαφορετικά διανύσματα και στην παρακολούθηση των ελάχιστων και μέγιστων τιμών.