English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C++ map crbegin()Function used to return a constant reverse iterator to the last element of the map container.
The reverse iterator of the constant map will move backward and increment until it reaches the beginning of the map container (the first element) and points toConstantElement.
const_reverse_iterator crbegin() const noexcept; // Starting from C++ 11
Nessuno
Restituisce un iteratore costante inverso che punta all'ultimo elemento della map.
Vediamo un esempio semplice della funzione crbegin().
#include <iostream> #include <map> using namespace std; int main () { map<char,int> mymap; mymap['b'] = 100; mymap['a'] = 200; mymap['c'] = 300; cout << "Mettiamo in ordine inverso mymap:"; for (auto rit = mymap.crbegin(); rit != mymap.crend(); ++rit) cout << " [" << rit->first << ':' << rit->second << ']'; cout << '\n'; return 0; }
Output:
Mettiamo in ordine inverso mymap: [c:300] [b:100] [a:200]
Nell'esempio sopra, viene utilizzato il funzione crbegin() per restituire un iteratore costante inverso che punta all'ultimo elemento del contenitore mymap.
Poiché gli elementi della map vengono memorizzati in ordine di sorting delle chiavi. Pertanto, l'iterazione sulla map avverrà in tale ordine, ossia l'ordine delle chiavi.
Vediamo un esempio semplice di come esplorare una map in ordine inverso utilizzando un ciclo while.
#include <iostream> #include <map> #include <string> #include <iterator> using namespace std; int main() { // creo e inizializzo una map di stringhe e interi map<string, int> mapEx = { {"aaa", 10} {"ddd", 11} {"bbb", 12} {"ccc", 13} }; // creo un iteratore di map e lo pointingo alla fine della map map<string, int>::const_reverse_iterator it = mapEx.crbegin(); // utilizzo l'Iterator per iterare sulla map fino all'inizio. while (it != mapEx.crend()) { //accedo al KEY del suo elemento. string word = it->first; //accedo al VALUE dell'elemento a cui punta. int count = it->second; cout << word << " :: " << count << endl; //aumento l'iteratore per puntare al successivo elemento it++; } return 0; }
Output:
ddd :: 11 ccc :: 13 bbb :: 12 aaa :: 10
Nell'esempio sopra, usiamo un ciclo while per iterare sulla map in senso inverso e inizializziamo l'ultimo elemento della map con la funzione crbegin().
Poiché la map memorizza gli elementi in ordine di sortita delle chiavi, l'iterazione sulla map avviene in questo ordine, ovvero l'ordine delle chiavi.
Vediamo un esempio semplice per ottenere il primo elemento del contenitore map inverso.
#include <iostream> #include <string> #include <map> using namespace std; int main () { map<int, int> m1 = { { 1, 10}, { 2, 20 }, { 3, 30 } }; auto ite = m1.crbegin(); cout << "Il primo elemento del contenitore map m1 inverso è:"; cout << "{ " << ite->first << ", " << ite->second << "}\n"; return 0; }
Output:
Il primo elemento del contenitore map m1 inverso è: {3, 30}
Nell'esempio sopra, la funzione crbegin() restituisce il primo elemento del contenitore map m1 inverso, ovvero {3, 30}.
Vediamo un esempio semplice per ordinare e calcolare il punteggio più alto.
#include <iostream> #include <string> #include <map> using namespace std; int main () { map<int, int> marks = { { 400, 10}, { 312, 20 }, { 480, 30 }, { 300, 40 }, { 425, 50 }}; cout << "Marks" << " | " << "Numero di matricola" << '\n'; cout << "______________________\n"; map<int, int>::const_reverse_iterator rit; for (rit = marks.crbegin(); rit != marks.crend(); ++rit) cout << rit->first << " | " << rit->second << '\n'; auto ite = marks.crbegin(); cout << "\nLa punteggio più alto è: " << ite->first << "\n"; cout << "Il numero del volume di Topper è: " << ite->second << "\n"; return 0; }
Output:
Punteggio | Numero di volume ______________________ 480 | 30 425 | 50 400 | 10 312 | 20 300 | 40 La punteggio più alto è: 480 Il numero di volume di Topper è: 30
Nell'esempio sopra, è stato implementato il marcatura map, in cui il "numero di volume (Roll Number)" viene memorizzato come valore e il marcatura come chiave. Questo ci permette di utilizzare la funzione di ordinamento automatico della map e ci permette di identificare il numero di volume del marcatura più alta.