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

Corso di base C++

Controllo di flusso C++

Funzione C++

Array e stringhe C++

Strutture dati C++

Classi e oggetti C++

Puntatore C++

Ereditarietà C++

Corso di STL C++

Manuale di riferimento C++

Modo d'uso e esempio della funzione rend() di C++ map

C++ STL map(contenitore)

C ++ map rend()La funzione serve perOrdine inversoPorta l'iteratore all'ultimo elemento del map (non l'ultimo elemento, ma l'elemento passato dell'ultimo). Questo è simile all'elemento prima del primo elemento di un contenitore non invertito.

Attenzione: - Questo è un segnaposto. In questa posizione non c'è elemento, l'accesso è comportamento non definito.

Sintassi

      reverse_iterator rend(); // prima di C++ 11
const_reverse_iterator rend() const; // prima di C++ 11
      reverse_iterator rend() noexcept; // da C++ 11
const_reverse_iterator rend() const noexcept; // da C++ 11

Parametro

Nessuno

Valore di ritorno

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

Esempio 1

Ecco un esempio semplice della funzione rend():

#include <iostream>
#include <map>
using namespace std;
int main ()
{
  map<char, int> mymap;
  
  mymap['x'] = 100;
  mymap['y'] = 200;
  mymap['z'] = 300;
  map<char, int>::reverse_iterator rit;
  for (rit = mymap.rbegin(); rit != mymap.rend(); ++rit){
   cout << rit->first << " = " << rit->second << '\n';
  }
  return 0;
}

Output:

z = 300
y = 200
x = 100

Nell'esempio precedente, la funzione rend() viene utilizzata per far tornare l'iteratore inverso all'elemento successivo dell'ultimo elemento del contenitore inverso.

Poiché la mappa memorizza gli elementi in ordine di sortita delle chiavi, l'iterazione sulla mappa porta a questa sequenza, ossia l'ordine di sortita delle chiavi.

Esempio 2

Ecco un esempio semplice, utilizzando un ciclo while per esplorare un map in ordine inverso:

#include <iostream>
#include <map>
#include <string>
#include <iterator>
using namespace std;
 
int main() {
 
	map<string, int> mapEx = {
			{"aaa", 10},
			{"ddd", 11},
			{"bbb", 12},
			{"ccc", 13}
	};
	map<string, int>::reverse_iterator it = mapEx.rbegin();
 
	while (it != mapEx.rend()) {
		string word = it->first;
		int count = it->second;
		cout << word << " :: " << count << endl;
		it++;
	}
	return 0;
}

Output:

ddd :: 11
ccc :: 13
bbb :: 12	
aaa :: 10

Nell'esempio sopra, usiamo un ciclo while per esplorare la mappa in ordine inverso.

Poiché la mappa memorizza gli elementi in ordine di sortita delle chiavi, l'iterazione sulla mappa porta a questa sequenza, ossia l'ordine di sortita delle chiavi.

Esempio 3

Vediamo un esempio semplice.

#include <iostream>
#include <map>
using namespace std;
int main(void) {
   map<char, int> m = {
            {'a', 1},
            {'b', 2},
            {'c', 3},
            {'d', 4},
            {'e', 5},
            };
   cout << "La mappa contiene gli elementi in ordine inverso:" << endl;
   for (auto it = m.rbegin(); it != m.rend(); ++it)
      cout << it->first << " = " << it->second << endl;
   return 0;
}

Output:

La mappa contiene gli elementi in ordine inverso:
e = 5
d = 4
c = 3
b = 2
a = 1

Nell'esempio sopra, gli elementi della mappa vengono restituiti in ordine inverso.

Esempio 4

Vediamo un esempio semplice, l'ordinamento e il calcolo del punteggio più alto.

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main ()
{
  map<int,int> emp = {
                { 1000, 10 },
                { 2500, 20 },
                { 4500, 30 },
                { 3000, 40 },
                { 5500, 50 }};
   cout << "Salario" << " | " << "ID" << '\n';
   cout << "______________________\n";
   
  map<int,int>::reverse_iterator rit;
   for (rit = emp.rbegin(); rit != emp.rend(); ++rit){}{
    cout << rit->first << "               | " << rit->second << '\n';
    auto ite = emp.rbegin();
    cout << "\nSalario più alto: " << ite->first << "\n";
    cout << "ID è: " << ite->second << "\n";
    }
  return 0;
  }

Output:

Retribuzione | ID
______________________
5500 | 50
4500 | 30
3000 | 40
2500 | 20
1000 | 10
Retribuzione più alta: 5500 
ID è: 50

Nell'esempio sopra, è stato implementato un contenitore emp, in cui l'ID viene memorizzato come valore e la retribuzione viene memorizzata come chiave. Questo ci permette di utilizzare la funzione di ordinamento automatico del map e ci permette di determinare l'ID dell'elemento con la retribuzione più alta.

C++ STL map(contenitore)