Trier une liste de pointeur de class
j'ai une liste de class Citoyen que j'aimerai trier selon un critère par example leur id
donc j'ai une liste de Citoyen :
Code:
list<unique_ptr<Citoyen>> ListeDePatient;
je fais quelque insert dans ma list :
Code:
1 2 3
| ListeDePatient.push_back(unique_ptr<Citoyen>(new Citoyen(3,"bob","2012")));
ListeDePatient.push_back(unique_ptr<Citoyen>(new Citoyen(1,"roger","2013")));
ListeDePatient.push_back(unique_ptr<Citoyen>(new Citoyen(2,"noob","2011"))); |
J'aimerai la trier selon le id, donc je me suis fais une fonction qui retourne le citoyen ayant le plus grand id :
Code:
1 2 3 4 5 6 7
| bool NasGreater(unique_ptr<Citoyen> a, unique_ptr<Citoyen> b)
{
if(a._Myptr->GetNas() == b._Myptr->GetNas())
return a._Myptr->GetNas() < b._Myptr->GetNas();
return a._Myptr->GetNas() > b._Myptr->GetNas();
} |
et je trie ma liste :
Code:
sort(ListeDePatient.begin(),ListeDePatient.end(),NasGreater);
J'obtient une erreur lors à sort : impossible de déduire l'Argument modèle pour std::move_iterator<_RanIt> ...
Je comprend pas vraiment l'erreur l'iterator n'est pas capable de parcourir la liste a cause qu'il ne sait pas c'est quoi comme liste ?