#include <iostream>
#include <set>
#include <string>
using namespace std;
class nodo{
public:
nodo(){};
nodo(char const * c, char const *d): chiave(c), b(d){};
string const get_chiave(){ return chiave;}
string const get_b(){return b;}
private:
string chiave;
string b;
};
bool operator < ( nodo nuovo, nodo testa){
if((nuovo.get_chiave()).compare(testa.get_chiave())<0)
return true;
return false;
}//riscrivo l'operatore < in modo che quando viene usato per ordinare gli oggetti di tipo class nodo nel momento dell'inserimento di un nuovo nodo la posizione del nuovo ogetto all'interno dell'albero viene decisa in funzione della chiave
ostream& operator <<(ostream& outs, nodo oggetto){
outs <<oggetto.get_b();
return outs;
}
int main(){
nodo primo("c", "1");
nodo secondo("b","2");
nodo terzo("g","3");
set <nodo > albero;
albero.insert(primo);
albero.insert(secondo);
albero.insert(terzo);
set<nodo>::iterator p;
for (p = albero.begin( ); p != albero.end( ); p++)
cout<<*p<<" ";
cout << endl;
}