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

Tutorial di Base di C++

C++ Flow Control

Funzioni in C++

C++ Array & String

C++ Data Structures

C++ Class & Object

Puntatori in C++

Ereditarietà in C++

Tutorial di STL in C++

C++ Reference Manual

Usage and examples of C++ set rend()

Set (Insieme) in STL di C++

C++ set rend()The function is used toReverse orderMoves the iterator to the end of the set (not the last element, but the past last element). This is similar to the element before the first element of a non-reversed container.

Note: - This is a placeholder. There is no element at this position, attempting to access it is undefined behavior.

Syntax

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

Parametro

Nessuno

Valore di ritorno

Restituisce l'iteratore inverso al elemento successivo dell'ultimo elemento del contenitore inverso.

Complessità

Immutabile.

Validità degli iteratori

Nessun cambiamento.

Conflitto dei dati

Il contenitore viene visitato. Nessuna versione const e nessuna versione non const modificano il contenitore.

L'accesso simultaneo agli elementi della raccolta è sicuro.

Sicurezza delle eccezioni

Questa funzione non lancia mai eccezioni.

Esempio 1

Guardiamo un esempio semplice della funzione rend():

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

Output:

Gli elementi sono: 50 40 30 20 10

Nell'esempio sopra, la funzione rend() viene usata per tornare all'elemento successivo dell'ultimo elemento del container inverso.

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

Esempio 2

Lasciamo che guardiamo un esempio semplice, esplorare il set in ordine inverso con il ciclo while:

#include <iostream>
#include <set>
#include <string>
#include <iterator>
using namespace std;
 
int main() {
 
	// Creare e inizializzare un insieme di stringhe & int
	set<string> setEx = {"aaa", "bbb", "ccc", "ddd"};
 
	// Creare un iteratore di set e puntare alla fine del set
	set<string>::reverse_iterator it = setEx.rbegin();
 
	// Usare l'iteratore per esplorare la集合 fino all'inizio
	while (it != setEx.rend()) {
		// Accedere alla chiave dell'elemento a cui punta
		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, usiamo il ciclo while per esplorare il set in ordine inverso.

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

Esempio 3

Lasciamo che guardiamo un esempio semplice:

#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 << "L'ultimo elemento dell'insieme inverso è ";  
        cout << *s1_rIter << "." << endl;  
  
   // end può essere utilizzato per terminare l'iterazione   
   // Passa in ordine attraverso un insieme  
   cout << "L'insieme è: ";  
   for (s1_Iter = s1.begin(); s1_Iter != s1.end(); s1_Iter++)  
      cout << *s1_Iter << " ";  
   cout << "." << endl;  
  
   // rend può essere utilizzato per terminare l'iterazione   
   // Ordina in ordine inverso attraverso un insieme
   cout << "L'insieme 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 << "Dopo la rimozione, l'ultimo elemento "  
        << "L'insieme inverso è: " << *s1_rIter << "." << endl;  
}

Output:

L'ultimo elemento dell'insieme inverso è 10.
L'insieme è: 10 20 30 .
L'insieme inverso è: 30 20 10 .
Dopo la rimozione, l'ultimo elemento dell'insieme inverso è 20.

Nell'esempio sopra, gli elementi del set vengono restituiti in ordine inverso.

Esempio 4

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

#include <iostream>
#include <string>
#include <set>
using namespace std;
int main ()
{
  set<int> emp = {1000, 2500, 4500, 5000, 3000};
   cout << " stipendio " << '\n';
   cout << "______________________\n";
   
  set<int>::reverse_iterator rit;
    for (rit = emp.rbegin(); rit != emp.rend(); ++rit)
    cout << *rit << '\n';
    auto ite = emp.rbegin();
 
    cout << "\nMassimo stipendio: " << *ite << " \n";
  return 0;
  }

Output:

Stipendio
______________________
5000
4500
3000
2500
1000
Massimo stipendio: 5000

Nell'esempio sopra, è stato implementato un set emp, in cui l'ID viene memorizzato come valore mentre lo stipendio viene memorizzato come chiave. Ciò ci permette di utilizzare la funzione di ordinamento automatico dell'insieme e ci permette di identificare l'ID dell'elemento con lo stipendio più alto.

Set (Insieme) in STL di C++