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

C++ Uso e exemplo de set rbegin()

C++ STL Set ( Conjunto )

C ++ set rbegin()A função é usada para retornar a referência ao último elemento do contêiner set.Iterador reverso.

do setIterador reversoMove-se na direção oposta e incrementa até alcançar o início do contêiner set (o primeiro elemento).

Sintaxe

      reverse_iterator rbegin();                            //Até C ++ 11
const_reverse_iterator rbegin() const;                //Até C ++ 11
      reverse_iterator rbegin() noexcept;              //De C++ 11Começa
const_reverse_iterator rbegin() const noexcept;  //De C++ 11Começa

Parâmetros

Nenhum

Retorno

Ele retorna um iterador reverso (reverse iterator) que aponta para o último elemento da coleção.

Complexidade

Invariável.

Validade do iterador

Sem alterações.

Conflito de dados

Pode acessar a versão não const ou a versão const não pode modificar o contêiner da coleção. Acesso 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 rbegin():

#include <iostream>
#include <set>
using namespace std;
int main ()
{
  set<int> myset = {10,50,30,40,20};
  
  // Mostrar conteúdo:
  cout << "Os elementos são: " << endl;
  set<int>::reverse_iterator rit;
  for (rit = myset.rbegin(); rit != myset.rend(); ++rit)
    cout << *rit << '\n';
  return 0;
}

Saída:

Os elementos são: 
50
40
30
20
10

No exemplo acima, a função rbegin() é usada para retornar o iterador reverso que aponta para o último elemento do conjunto myset.

Porque o set armazena os elementos na ordem de classificação das chaves, iterar sobre o set resultará na ordem mencionada acima, ou seja, a ordem de classificação das chaves.

Exemplo2

Vamos ver um exemplo simples, usando o loop while para percorrer a coleção em ordem inversa:

#include <iostream>
#include <set>
#include <string>
#include <iterator>
using namespace std;
 
int main() {
 
	// Cria e inicializa o set de strings
	set<string> setEx = {"aaa", "ccc", "ddd", "bbb"};
 
	// Cria um iterador de set e o aponta para o final do set
	set<string, int>::reverse_iterator it = setEx.rbegin();
 
	// Percore a coleção usando o iterador até o início.
	while (it != setEx.rend()) {
		// Acesse KEY (chave) do elemento ao qual o iterador aponta.
		string word = *it;
  
		cout << word << endl;
 
		// Aumenta o 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 iterar a coleção em ordem inversa e inicializamos o último elemento da coleção usando a função rbegin().

Porque o set armazena os elementos na ordem de classificação das chaves, iterar sobre o set resultará na ordem mencionada acima, ou seja, a ordem de classificação das chaves.

Exemplo3

Vamos ver um exemplo simples para obter o primeiro elemento da coleção inversa:

#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.rbegin();  
   cout << "O primeiro elemento do complemento é "  
        << *s1_rIter << "." << endl;  
  
   // begin pode ser usado para começar a iteração  
   // Iterar sobre uma coleção em ordem
   cout << "A coleção set é:";  
   for (s1_Iter = s1.begin(); s1_Iter != s1.end(); s1_Iter++ )  
      cout << " "; *s1_Iter;  
   cout << endl;  
  
   // rbegin pode ser usado para começar a iteração   
   // Iterar sobre uma coleção em ordem inversa
   cout << "A coleção set inversa é:";  
   for (s1_rIter = s1.rbegin(); s1_rIter != s1.rend(); s1_rIter++ )  
      cout << " "; *s1_rIter;  
   cout << endl;  
  
   // Pode-se excluir o elemento removendo a referência ao elemento da chave do set   
   s1_rIter = s1.rbegin();  
   s1.erase ( *s1_rIter);  
  
   s1_rIter = s1.rbegin();  
   cout << "Após a exclusão, o primeiro elemento "  
        << "No iterador reverso é " << *s1_rIter << "." << endl;  
        
return 0;        
}

Saída:

O primeiro elemento do complemento é 30.
A coleção set é: 10 20 30
A coleção set inversa é: 30 20 10
Após a exclusão, o primeiro elemento no iterador reverso é 20.

Exemplo4

Vamos ver um exemplo simples para ordenar e calcular a maior nota:

#include <iostream>
#include <string>
#include <set>
using namespace std;
int main ()
{
  set<int> marks = {400, 350, 465, 290, 410};
   cout << "Nota" << '\n';
   cout << "______________________\n";
   
  set<int>::reverse_iterator rit;
  for (rit = marks.rbegin(); rit != marks.rend(); ++rit)
    cout << *rit << '\n';
    auto ite = marks.rbegin();
 
    cout << "\nA maior pontuação é: " << *ite << " \n";
  return 0;
  }

Saída:

Pontuação
______________________
465
410
400
350
290
A maior pontuação é: 465

No exemplo acima, foi implementado um conjunto com o marcador como chave. Isso nos permite aproveitar as vantagens da classificação automática e identificar a maior pontuação.

C++ STL Set ( Conjunto )