English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set rend()A função é usada paraOrdem inversaRetornar o iterador para o final da coleção (não o último elemento, mas o elemento passado pelo último). Isso é semelhante ao elemento antes do primeiro elemento de um container não invertido.
reverse_iterator rend(); //Até ++ 11 const_reverse_iterator rend() const; //Até ++ 11 reverse_iterator rend() noexcept; //C++ 11Do const_reverse_iterator rend() const noexcept; //C++ 11Do
Nenhum
Ele retorna o iterador reverso para o elemento imediatamente após o último elemento do container invertido.
Invariável.
Sem alterações.
O container é acessado. A versão const e a versão não const não modificam o container.
Acesso simultâneo aos elementos da coleção é seguro.
Esta função nunca lança exceções.
Vamos ver um exemplo simples da função rend():
#include <iostream> #include <set> using namespace std; int main () { set<int> myset = {40,50,20,10,30}; cout << "O elemento é :"; for (auto rit = myset.rbegin(); rit != myset.rend(); ++rit) cout << ' ' << *rit; cout << '\n'; return 0; }
Saída:
O elemento é : 50 40 30 20 10
No exemplo acima, a função rend() é usada para retornar o iterador reverso para o elemento imediatamente após o último elemento do container reverso.
Porque o conjunto é armazenado em ordem de classificação de chave, a iteração pelo conjunto resulta na ordem acima, ou seja, a ordem de classificação da chave.
Vamos ver um exemplo simples, usando um loop while para percorrer a coleção em ordem inversa:
#include <iostream> #include <set> #include <string> #include <iterator> using namespace std; int main() { // Criar e inicializar um conjunto de strings & int set<string> setEx = {"aaa", "bbb", "ccc", "ddd"}; // Criar um iterador de set e apontar para o final do set set<string>::reverse_iterator it = setEx.rbegin(); // Usar o iterador para percorrer a coleção até o início. while (it != setEx.rend()) { // Acessar a chave do elemento ao qual ele aponta. string word = *it; cout << word << endl; // Adicionar um iterador para apontar para o próximo item it++; } return 0; }
Saída:
ddd ccc bbb aaa
No exemplo acima, usamos o loop while para percorrer o conjunto em ordem inversa.
Porque o conjunto é armazenado em ordem de classificação de chave, a iteração pelo conjunto resulta na ordem acima, ou seja, a ordem de classificação da chave.
Vamos ver um exemplo simples:
#include <set> #include <iostream> int main() { using namespace std; set<int> s1; set<int>::iterator s1_Iter; set<int>::reverse_iterator s1_rIter; s1.insert( 10 ); s1.insert( 20 ); s1.insert( 30 ); s1_rIter = s1.rend( ); s1_rIter--; cout << "O último elemento do conjunto complementar é " << *s1_rIter << "." << endl; // end pode ser usado para terminar a iteração // iterar por um conjunto em ordem cout << "Conjunto é: "; for ( s1_Iter = s1.begin( ); s1_Iter != s1.end( ); s1_Iter++ ) cout << *s1_Iter << " "; cout << "." << endl; // rend pode ser usado para terminar a iteração // iterar por um conjunto em ordem inversa cout << "Conjunto inverso é: "; for ( s1_rIter = s1.rbegin( ); s1_rIter != s1.rend( ); s1_rIter++ ) cout << *s1_rIter << " "; cout << "." << endl; s1_rIter = s1.rend( ); s1_rIter--; s1.erase ( *s1_rIter ); s1_rIter = s1.rend( ); --s1_rIter; cout << "Após a exclusão, o último elemento " << "Conjunto inverso é: " << *s1_rIter << "." << endl; }
Saída:
O último elemento do conjunto complementar é 10. O conjunto é: 10 20 30 . O conjunto inverso é: 30 20 10 . Após a exclusão, o último elemento do conjunto complementar é 20.
No exemplo acima, os elementos do conjunto são retornados em ordem inversa.
Vamos ver um exemplo simples para ordenar e calcular a maior pontuação:
#include <iostream> #include <string> #include <set> using namespace std; int main () { set<int> emp = {1000,2500,4500,5000,3000}; cout << "salário" << '\n'; cout << "______________________\n"; set<int>::reverse_iterator rit; for (rit = emp.rbegin(); rit != emp.rend(); ++rit) cout << *rit << '\n'; auto ite = emp.rbegin(); cout << "\nMaior salário: " << *ite << " \n"; return 0; }
Saída:
Salário ______________________ 5000 4500 3000 2500 1000 Maior salário: 5000
No exemplo acima, foi implementado um set emp, onde o ID é armazenado como valor e o salário é armazenado como chave. Isso nos permite aproveitar a função de ordenação automática do conjunto e nos permite identificar o ID do elemento com o salário mais alto.