English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ map rend()La fonction est utilisée pourOrdre inverseRetourner l'itérateur à la fin du map (pas le dernier élément, mais l'élément immédiatement avant le dernier). Cela est similaire à l'élément avant le premier élément dans un conteneur non inversé.
reverse_iterator rend(); // de C++ 11 avant const_reverse_iterator rend() const; // de C++ 11 avant reverse_iterator rend() noexcept; //de C++ 11 Début const_reverse_iterator rend() const noexcept; //de C++ 11 Début
Aucun
Elle renvoie l'itérateur en arrière vers l'élément suivant immédiatement après le dernier élément du conteneur inversé.
Laissez-nous voir un exemple simple de la fonction 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; }
Sortie :
z = 300 y = 200 x = 100
Dans l'exemple ci-dessus, la fonction rend() est utilisée pour renvoyer l'itérateur en arrière vers l'élément suivant immédiatement après le dernier élément du conteneur inversé.
Comme la map stocke les éléments dans un ordre de tri des clés, l'itération sur la map entraînera l'ordre ci-dessus, c'est-à-dire l'ordre de tri des clés.
Laissez-nous voir un exemple simple, utilisant une boucle while pour parcourir le map dans l'ordre inverse :
#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; }
Sortie :
ddd :: 11 ccc :: 13 bbb :: 12 aaa :: 10
Dans l'exemple précédent, nous avons utilisé une boucle while pour itérer sur la map dans un ordre inverse.
Comme la map stocke les éléments dans un ordre de tri des clés, l'itération sur la map entraînera l'ordre ci-dessus, c'est-à-dire l'ordre de tri des clés.
Voyons un exemple simple.
#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 map contient les éléments suivants dans un ordre inverse:\n" for (auto it = m.rbegin(); it != m.rend(); ++it) cout << it->first << " = " << it->second << endl; return 0; }
Sortie :
La map contient les éléments suivants dans un ordre inverse: e = 5 d = 4 c = 3 b = 2 a = 1
Dans l'exemple précédent, les éléments de la map sont renvoyés dans un ordre inverse.
Voyons un exemple simple, classant et calculant le salaire le plus élevé.
#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 << "Salary \t| \tID \n" cout<<"______________________\n"; map<int,int>::reverse_iterator rit; for (rit=emp.rbegin(); rit!=emp.rend(); ++rit){}{ cout << rit->first << " \t| \t" << rit->second << \n"; auto ite = emp.rbegin(); cout << "\nSalary: \" << ite->first << " <<" << \n"; cout << "ID est : " << ite->second << "\n"; } return 0; }
Sortie :
Salaire | ID ______________________ 5500 | 50 4500 | 30 3000 | 40 2500 | 20 1000 | 10 Salaire le plus élevé : 5500 ID est : 50
Dans l'exemple ci-dessus, un conteneur emp a été implémenté, où l'ID est stocké comme valeur et le salaire comme clé. Cela nous permet d'utiliser la fonction de tri automatique de map et de déterminer l'ID de l'élément le plus élevé du salaire.