Πώς να επαναλάβετε τον χάρτη σε C ++

How Iterate Over Map C



Σε αυτό το γρήγορο σεμινάριο, θα δούμε πώς να επαναλαμβάνεται στο χάρτη σε C ++.

Υπάρχουν πολλοί τρόποι για να επαναλάβετε τον χάρτη σε C ++. Με τις νεότερες εκδόσεις του C ++, υπάρχουν πιο προηγμένοι τρόποι για να επαναλάβετε τον χάρτη σε C ++.







Ας περάσουμε το καθένα ένα προς ένα.



Χρήση για βρόχο με stp :: map

Δημιουργήσαμε έναν χάρτη με το όνομα | _+_ | και εισάγει ζεύγη κλειδιού-τιμής σε αυτό.



<Για>>
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
χρησιμοποιώντας ονομαστικου χωρουώρες?
intκύριος() {
// Αρχικοποίηση ενός χάρτη
χάρτης>>'Ινδία','Δελχί'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>(«Νεπάλ»,'Κατμαντού'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>('Κίνα','Πεκίνο'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>('Γαλλία','Παρίσι'))?

// Επαναλάβετε χρησιμοποιώντας τον επαναληπτικό in for loop
Για (αυτοitr=countryCapitalMap.να αρχίσει()?itr!=countryCapitalMap.τέλος()?itr++)
{
ώρες::κόστος <<itr->>πρώτα// Κλειδί πρόσβασης
<< ':'
<<itr->>δεύτερος// Τιμή πρόσβασης
<<ώρες::endl?
}
ΕΠΙΣΤΡΟΦΗ 0?
}
</Για>>
Παραγωγή:
<Για>>
Κίνα:Πεκίνο
Γαλλία:Παρίσι
Ινδία:Δελχί
Νεπάλ:Κατμαντού
</Για>>

Όπως μπορείτε να δείτε, έχουμε εκτυπώσει χώρα: κεφάλαιο (κλειδί: αξία) χρησιμοποιώντας το βρόχο.





Εάν παρατηρήσετε, έχουμε χρησιμοποιήσει | _+_ | προσδιοριστής τύπου για τον επαναληπτή χάρτη λόγω αναγνωσιμότητας. Μπορείτε να χρησιμοποιήσετε το | _+_ | ρητά επίσης.
Σημείωση: Αν δείτε την έξοδο, ταξινομείται κατά πλήκτρα σε αύξουσα σειρά. Αυτό συμβαίνει επειδή το std :: map είναι ένα ταξινομημένο συσχετιστικό κοντέινερ με το παρεχόμενο Comparator (έκδοση C ++ 11 και μετά). Δεδομένου ότι δεν δώσαμε κανένα συγκριτή, έτσι το C ++ χρησιμοποίησε τον προεπιλεγμένο συγκριτή για συμβολοσειρά.

Χρήση βρόχου while με stp :: map

Μπορούμε επίσης να χρησιμοποιήσουμε έναν βρόχο while αντί για βρόχο.



<Για>>
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
#include>
χρησιμοποιώντας ονομαστικου χωρουώρες?
intκύριος() {
// Αρχικοποίηση ενός χάρτη
χάρτης<χορδή, χορδή>>countryCapitalMap?
// Εισαγάγετε διαφορετικά στοιχεία στο χάρτη
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>('Ινδία','Δελχί'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>(«Νεπάλ»,'Κατμαντού'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>('Κίνα','Πεκίνο'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>('Γαλλία','Παρίσι'))?


// Δημιουργήστε έναν επαναληπτή για τον χάρτη και αρχικοποιήστε με αρχή
αυτοitr=countryCapitalMap.να αρχίσει()?
// Επαναλάβετε χρησιμοποιώντας iterator σε while loop
ενώ (itr!=countryCapitalMap.τέλος())
{
ώρες::κόστος <<itr->>πρώτα// Κλειδί πρόσβασης
<< ':'
<<itr->>δεύτερος// Τιμή πρόσβασης
<<ώρες::endl?
itr++?
}
ΕΠΙΣΤΡΟΦΗ 0?
}
</Για>>
Παραγωγή:
<Για>>
Κίνα:Πεκίνο
Γαλλία:Παρίσι
Ινδία:Δελχί
Νεπάλ:Κατμαντού
</Για>>

Χρήση εύρους βάσει βρόχου (έκδοση C ++ 11 και μετά)

Εάν χρησιμοποιείτε έκδοση C ++ 11, τότε αυτός είναι ο πιο κομψός τρόπος για να επαναλάβετε τον χάρτη στο C ++. Μπορείτε να αποφύγετε τους παραδοσιακούς κύβους και να το χρησιμοποιήσετε.

<Για>>
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω

χρησιμοποιώντας ονομαστικου χωρουώρες?
intκύριος() {
// Αρχικοποίηση ενός χάρτη
χάρτης<χορδή, χορδή>>countryCapitalMap?
// Εισαγάγετε διαφορετικά στοιχεία στο χάρτη
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>('Ινδία','Δελχί'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>(«Νεπάλ»,'Κατμαντού'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>('Κίνα','Πεκίνο'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>('Γαλλία','Παρίσι'))?


// Επαναλάβετε χρησιμοποιώντας τον επαναληπτικό in for loop
Για (const αυτο &αυτός:countryCapitalMap) {
κόστος <<αυτός.πρώτα << ':' <<αυτός.δεύτερος<<' n'?
}

ΕΠΙΣΤΡΟΦΗ 0?
}
</Για>>
Παραγωγή:
Κίνα:Πεκίνο
Γαλλία:Παρίσι
Ινδία:Δελχί
Νεπάλ:Κατμαντού

Χρήση βρόχου με βάση το εύρος με ζεύγη κλειδιών-τιμών (έκδοση C ++ 17 και μετά)

Αυτή η έκδοση υποστηρίζεται από το c ++ 17 και μετά και παρέχει έναν πιο ευέλικτο τρόπο για επανάληψη στο χάρτη. Μπορείτε να έχετε ρητή πρόσβαση στο ζεύγος κλειδιών-τιμών στο χάρτη, το οποίο παρέχει ακόμη πιο ευανάγνωστη λύση.

<Για>>
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω

χρησιμοποιώντας ονομαστικου χωρουώρες?
intκύριος() {
// Αρχικοποίηση ενός χάρτη
χάρτης<χορδή, χορδή>>countryCapitalMap?
// Εισαγάγετε διαφορετικά στοιχεία στο χάρτη
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>('Ινδία','Δελχί'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>(«Νεπάλ»,'Κατμαντού'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>('Κίνα','Πεκίνο'))?
countryCapitalMap.εισάγετε(ζεύγος<χορδή, χορδή>>('Γαλλία','Παρίσι'))?


// Επαναλάβετε χρησιμοποιώντας τον επαναληπτικό in for loop
Για (const αυτο& [κλειδί, τιμή] :countryCapitalMap) {
κόστος <<κλειδί<< ':' <<αξία<< ' n'?
}

ΕΠΙΣΤΡΟΦΗ 0?
}
</Για>>
Παραγωγή:
Κίνα:Πεκίνο
Γαλλία:Παρίσι
Ινδία:Δελχί
Νεπάλ:Κατμαντού

Αυτό έχει να κάνει με τον τρόπο επαναφοράς του χάρτη σε C ++. Καλή κωδικοποίηση!