Υπάρχουν πολλοί τρόποι για να επαναλάβετε τον χάρτη σε 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 ++. Καλή κωδικοποίηση!