English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ map rend()A função é usada paraOrdem inversaRetornar o iterador para o final do map (não o último elemento, mas o elemento passado ao último). Isso é semelhante ao elemento antes do primeiro elemento de um container não invertido.
reverse_iterator rend(); // de C++ 11 Antes const_reverse_iterator rend() const; // de C++ 11 Antes reverse_iterator rend() noexcept; //de C++ 11 Começar const_reverse_iterator rend() const noexcept; //de C++ 11 Começar
Nenhum
Ela retorna o iterador reverso para o elemento seguinte ao último do container invertido.
Vamos ver um exemplo simples da função 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->segundo << "\n"; } return 0; }
Saída:
z = 300 y = 200 x = 100
No exemplo acima, a função rend() é usada para retornar o iterador reverso para o elemento seguinte ao último do container reverso.
Como o map armazena os elementos em ordem de chave, a iteração sobre o map resultará na ordem de chave.
Vamos ver um exemplo simples, usando um loop while para percorrer o map em ordem inversa:
#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->primeiro; int count = it->segundo; cout << word << " :: " << count << endl; it++; } return 0; }
Saída:
ddd :: 11 ccc :: 13 bbb :: 12 aaa :: 10
No exemplo acima, usamos um loop while para percorrer o map em ordem inversa.
Como o map armazena os elementos em ordem de chave, a iteração sobre o map resultará na ordem de chave.
Vamos ver um exemplo simples.
#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 << "O map contém os seguintes elementos em ordem inversa:" << endl; for (auto it = m.rbegin(); it != m.rend(); ++it) cout << it->primeiro << " = " << it->segundo << endl; return 0; }
Saída:
O map contém os seguintes elementos em ordem inversa: e = 5 d = 4 c = 3 b = 2 a = 1
No exemplo acima, os elementos do map são retornados em ordem inversa.
Vamos ver um exemplo simples, ordenando e calculando o salário mais 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 << "Salário " << "| " << "ID " << "\n"; cout << "______________________\n"; map<int, int>::reverse_iterator rit; for (rit = emp.rbegin(); rit != emp.rend(); ++rit){}{ cout << rit->primeiro << "\n| " << rit->segundo << "\n"; auto ite = emp.rbegin(); cout << "\nSalário mais alto: " << ite->primeiro << "\n"; cout << "ID é: " << ite->second << "\n"; } return 0; }
Saída:
Salário | ID ______________________ 5500 | 50 4500 | 30 3000 | 40 2500 | 20 1000 | 10 Salário mais alto: 5500 ID é: 50
No exemplo acima, foi implementado um contêiner emp, onde o ID é armazenado como valor e o salário é armazenado como chave. Isso nos permite aproveitar a função de classificação automática do map e nos permite determinar o ID do elemento com o salário mais alto.