English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ map crendFunção usada paraIteradores constantesComEm ordem inversaRetorna ao final do map (retorna um iterador reverso constante, que aponta para o elemento virtual antes do primeiro elemento). Isso é semelhante ao elemento antes do primeiro elemento de um contêiner não reverso.
Nota:-Este é um marcador de posição. Não há elementos neste local, tentar acessá-lo é um comportamento não definido.
Nota: Iteradores constantes são iteradores que apontam para conteúdo constante.
const_reverse_iterator crend() const noexcept; //De C++ 11 Começar
Nenhum
Ele retorna um const_reverse_iterator até o elemento seguinte ao último elemento do contêiner reverso.
Vamos ver um exemplo simples da função crend().
#include <iostream> #include <map> using namespace std; int main () { map<char, int> mymap; mymap['x'] = 100; mymap['y'] = 200; mymap['z'] = 300; // Exibir conteúdo: const_reverse_iterator rit; for (rit = mymap.crbegin(); rit != mymap.crend(); ++rit) cout << rit->first << " = " << rit->second << "\n"; return 0; }
Saída:
z = 300 y = 200 x = 100
No exemplo acima, a função crend() é usada para retornar um iterador reverso constante até o elemento seguinte ao último elemento do contêiner constante.
Como o map armazena os elementos em ordem de chave, a iteração sobre ele causará a ordem acima, ou seja, a 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() { //Criar e inicializar o map de Strings e Ints map<string, int> mapEx = { { "aaa", 10 }, { "ddd", 11 }, { "bbb", 12 }, { "ccc", 13 } }; //Criar um iterador do map e apontar para o final do map const_reverse_iterator it = mapEx.crbegin(); //Usar o Iterator para iterar o map até o início. enquanto (ele != mapEx.crend()) { string palavra = ele->first; int count = it->second; 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 iterar sobre o map em ordem inversa.
Como o map armazena os elementos em ordem de chave, a iteração sobre ele causará a ordem acima, ou seja, a ordem de chave.
Vamos ver um exemplo simples.
#include <iostream> #include <map> using namespace std; int main(void) { /* Construtor de lista inicializadora */ 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.crbegin(); it != m.crend(); ++it) cout << it->first << " = " << it->second << 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, ordenar e calcular a maior pontuação.
#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>::const_reverse_iterator rit; for (rit = emp.crbegin(); rit != emp.crend(); ++rit) cout << rit->first << " | " << rit->second << "\n"; auto ite = emp.crbegin(); cout << "\nSalário mais alto: " << ite->first << "\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 container map chamado emp, onde o ID é armazenado como valor e o salário é armazenado como chave. Isso nos permite utilizar a função de ordenação automática do map e nos permite determinar o ID do elemento com o salário mais alto.