English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Uso e exemplo de set rend()

C++ Set (conjunto) STL

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.

Atenção:-Este é um marcador de posição. Este local não possui elementos, tentar acessá-lo é um comportamento não definido.

Sintaxe

      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

Parâmetros

Nenhum

Retorno

Ele retorna o iterador reverso para o elemento imediatamente após o último elemento do container invertido.

Complexidade

Invariável.

Validade do iterador

Sem alterações.

Conflito de dados

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.

Segurança de exceção

Esta função nunca lança exceções.

Exemplo1

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.

Exemplo2

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.

Exemplo3

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.

Exemplo4

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.

C++ Set (conjunto) STL