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

Usage and example of C++ set rbegin()

Set (insieme) STL C++

C++ set rbegin()Function to return a reference to the last element of the set containerReverse iterator.

Of the setReverse iteratorMoves in the opposite direction and increments until it reaches the beginning of the set container (the first element).

Syntax

      reverse_iterator rbegin(); // Until C++ 11
const_reverse_iterator rbegin() const; // Until C++ 11
      reverse_iterator rbegin() noexcept; // Starting from C++ 11
const_reverse_iterator rbegin() const noexcept; // Starting from C++ 11

Parametro

Nessuno

Valore di ritorno

Restituisce un iteratore inverso (reverse iterator) che punta all'ultimo elemento della collezione.

Complessità

Immutabile.

Validità degli iteratori

Nessuna variazione.

Conflitto dei dati

È possibile accedere alla versione non const o alla versione const di una collezione container che non può modificare la collezione. L'accesso agli elementi della collezione è sicuro.

Sicurezza delle eccezioni

Questa funzione non solleva mai eccezioni.

Esempio 1

Ecco un esempio semplice della funzione rbegin():

#include <iostream>
#include <set>
using namespace std;
int main ()
{
  set<int> myset = {10, 50, 30, 40, 20};
  
  // Mostrare il contenuto:
  cout << "Gli elementi sono: " << endl;
  set<int>::reverse_iterator rit;
  for (rit = myset.rbegin(); rit != myset.rend(); ++rit)
    cout << *rit << '\n';
  return 0;
}

Output:

Gli elementi sono: 
50
40
30
20
10

Nell'esempio sopra, la funzione rbegin() è utilizzata per restituire un iteratore inverso che punta all'ultimo elemento della collezione myset.

Poiché set memorizza gli elementi in ordine di chiave, l'iterazione del set porta all'ordine di sorting delle chiavi menzionato sopra.

Esempio 2

Facciamo un esempio semplice per esplorare la collezione in senso inverso utilizzando un ciclo while:

#include <iostream>
#include <set>
#include <string>
#include <iterator>
using namespace std;
 
int main() {
 
	// Creare e inizializzare una collezione stringa
	set<string> setEx = {"aaa", "ccc", "ddd", "bbb"};
 
	// Creare un iteratore set e puntare alla fine del set
	set<string, int>::reverse_iterator it = setEx.rbegin();
 
	// Eseguire la scansione della collezione utilizzando l'iteratore fino all'inizio
	while (it != setEx.rend()) {
		// Accedere alla KEY (chiave) dell'elemento puntato
		string word = *it;
  
		cout << word << endl;
 
		// Aumentare l'iteratore per puntare al successivo elemento
		it++;
	}
	return 0;
}

Output:

ddd
ccc
bbb
aaa

Nell'esempio sopra, abbiamo iterato la collezione in senso inverso utilizzando un ciclo while e abbiamo inizializzato l'ultimo elemento della collezione utilizzando la funzione rbegin().

Poiché set memorizza gli elementi in ordine di chiave, l'iterazione del set porta all'ordine di sorting delle chiavi menzionato sopra.

Esempio 3

Facciamo un esempio semplice per ottenere l'elemento iniziale della collezione 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 << "Il primo elemento dell'insieme complementare è "  
        << *s1_rIter << "." << endl;  
  
   // begin può essere utilizzato per iniziare l'iterazione  
   // Passa attraverso un insieme nell'ordine
   cout << "La raccolta è:";  
   for (s1_Iter = s1.begin(); s1_Iter != s1.end(); s1_Iter++)  
      cout << " " << *s1_Iter;  
   cout << endl;  
  
   // rbegin può essere utilizzato per iniziare l'iterazione   
   // Passa attraverso un insieme nell'ordine inverso
   cout << "La raccolta inversa è:";  
   for (s1_rIter = s1.rbegin(); s1_rIter != s1.rend(); s1_rIter++)  
      cout << " " << *s1_rIter;  
   cout << endl;  
  
   // Puoi eliminare l'elemento dell'insieme rimuovendo il riferimento alla chiave dell'elemento   
   s1_rIter = s1.rbegin();  
   s1.erase(*s1_rIter);  
  
   s1_rIter = s1.rbegin();  
   cout << "Dopo la rimozione, il primo elemento "  
        << "Nella raccolta inversa è " << *s1_rIter << "." << endl;  
        
return 0;        
}

Output:

Il primo elemento dell'insieme complementare è 30.
La raccolta è: 10 20 30
La raccolta inversa è: 30 20 10
Dopo la rimozione, il primo elemento nella raccolta inversa è 20.

Esempio 4

Ecco un esempio semplice per ordinare e calcolare il punteggio più alto:

#include <iostream>
#include <string>
#include <set>
using namespace std;
int main ()
{
  set<int> marks = {400, 350, 465, 290, 410};
   cout << "Punteggio" << '\n';
   cout << "______________________\n";
   
  set<int>::reverse_iterator rit;
  for (rit = marks.rbegin(); rit != marks.rend(); ++rit)
    cout << *rit << '\n';
    auto ite = marks.rbegin();
 
    cout << "\nIl punteggio più alto è: " << *ite << " \n";
  return 0;
  }

Output:

Punteggio
______________________
465
410
400
350
290
Il punteggio più alto è: 465

In questi esempi, è stato implementato un set con il segno come chiave. Questo ci permette di sfruttare i vantaggi della classificazione automatica e identificare il punteggio più alto.

Set (insieme) STL C++