English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ map rend()La funzione serve perOrdine inversoPorta l'iteratore all'ultimo elemento del map (non l'ultimo elemento, ma l'elemento passato dell'ultimo). Questo è simile all'elemento prima del primo elemento di un contenitore non invertito.
reverse_iterator rend(); // prima di C++ 11 const_reverse_iterator rend() const; // prima di C++ 11 reverse_iterator rend() noexcept; // da C++ 11 const_reverse_iterator rend() const noexcept; // da C++ 11
Nessuno
Restituisce l'iteratore inverso all'elemento successivo dell'ultimo elemento del contenitore invertito.
Ecco un esempio semplice della funzione rend():
#include <iostream> #include <map> using namespace std; int main () { map<char, int> mymap; mymap['x'] = 100; mymap['y'] = 200; mymap['z'] = 300; map<char, int>::reverse_iterator rit; for (rit = mymap.rbegin(); rit != mymap.rend(); ++rit){ cout << rit->first << " = " << rit->second << '\n'; } return 0; }
Output:
z = 300 y = 200 x = 100
Nell'esempio precedente, la funzione rend() viene utilizzata per far tornare l'iteratore inverso all'elemento successivo dell'ultimo elemento del contenitore inverso.
Poiché la mappa memorizza gli elementi in ordine di sortita delle chiavi, l'iterazione sulla mappa porta a questa sequenza, ossia l'ordine di sortita delle chiavi.
Ecco un esempio semplice, utilizzando un ciclo while per esplorare un map in ordine inverso:
#include <iostream> #include <map> #include <string> #include <iterator> using namespace std; int main() { map<string, int> mapEx = { {"aaa", 10}, {"ddd", 11}, {"bbb", 12}, {"ccc", 13} }; map<string, int>::reverse_iterator it = mapEx.rbegin(); while (it != mapEx.rend()) { string word = it->first; int count = it->second; cout << word << " :: " << count << endl; it++; } return 0; }
Output:
ddd :: 11 ccc :: 13 bbb :: 12 aaa :: 10
Nell'esempio sopra, usiamo un ciclo while per esplorare la mappa in ordine inverso.
Poiché la mappa memorizza gli elementi in ordine di sortita delle chiavi, l'iterazione sulla mappa porta a questa sequenza, ossia l'ordine di sortita delle chiavi.
Vediamo un esempio semplice.
#include <iostream> #include <map> using namespace std; int main(void) { map<char, int> m = { {'a', 1}, {'b', 2}, {'c', 3}, {'d', 4}, {'e', 5}, }; cout << "La mappa contiene gli elementi in ordine inverso:" << endl; for (auto it = m.rbegin(); it != m.rend(); ++it) cout << it->first << " = " << it->second << endl; return 0; }
Output:
La mappa contiene gli elementi in ordine inverso: e = 5 d = 4 c = 3 b = 2 a = 1
Nell'esempio sopra, gli elementi della mappa vengono restituiti in ordine inverso.
Vediamo un esempio semplice, l'ordinamento e il calcolo del punteggio più alto.
#include <iostream> #include <string> #include <map> using namespace std; int main () { map<int,int> emp = { { 1000, 10 }, { 2500, 20 }, { 4500, 30 }, { 3000, 40 }, { 5500, 50 }}; cout << "Salario" << " | " << "ID" << '\n'; cout << "______________________\n"; map<int,int>::reverse_iterator rit; for (rit = emp.rbegin(); rit != emp.rend(); ++rit){}{ cout << rit->first << " | " << rit->second << '\n'; auto ite = emp.rbegin(); cout << "\nSalario più alto: " << ite->first << "\n"; cout << "ID è: " << ite->second << "\n"; } return 0; }
Output:
Retribuzione | ID ______________________ 5500 | 50 4500 | 30 3000 | 40 2500 | 20 1000 | 10 Retribuzione più alta: 5500 ID è: 50
Nell'esempio sopra, è stato implementato un contenitore emp, in cui l'ID viene memorizzato come valore e la retribuzione viene memorizzata come chiave. Questo ci permette di utilizzare la funzione di ordinamento automatico del map e ci permette di determinare l'ID dell'elemento con la retribuzione più alta.