Ho questo codice:
#include <iostream>
#include <stdlib.h>
using namespace std;
bool minoreAlfabetico(string s1, string s2)
{
return s1<s2;
}
bool minoreLunghezza(string s1, string s2)
{
return s1.length() < s2.length();
}
bool minoreValore(string s1, string s2)
{
return stoi(s1) < stoi(s2);
}
void ordinamentoGenerico(string v[], int n_ele, bool (*fminore_di)(string,string))
{
for(int i=0;i<n_ele-1;i++)
for(int j=i+1;j<n_ele;j++)
if(fminore_di(v[j],v[i]))
swap(v[i],v[j]);
}
void stampaVet(string v[], int n_ele)
{
for(int i=0; i<n_ele; i++)
cout<<v[i]<<" ";
cout<<endl;
}
int main()
{
string v1[] {"caso","casalasco","abate","birillo"};
ordinamentoGenerico(v1,4,minoreAlfabetico);
stampaVet(v1,4);
string v2[] {"caso","casalacco","abate","birillo"};
ordinamentoGenerico(v2,4,minoreLunghezza);
stampaVet(v2,4);
string v3[] {"100","67","2","123"};
ordinamentoGenerico(v3,4,minoreValore);
stampaVet(v3,4);
Ho capito come funziona il meccanismo ma non capisco cosa combina quel bool(*fminore_di)(string, string)
Si tratta si di un puntatore a funzione ma non capisco come funziona in questo caso.Potreste aiutarmi a capire per favore?
P.S. : Perchè nella maggior parte dei libri non viene trattato l'argomento dei puntatori a puntatori?