Bonjour,
le titre n'est peut être pas très explicite mais mon problème est le suivant:
j'ai une classe hypergraph composé de deux conteneurs différents dont un est un vector<set<string> > .Je dois trier ce conteneur de différentes façons (taille,fréquence de ses éléments, ..). Pour la taille pas de problème, j'ai utilisé une fonction friend de cette façon :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
bool taille_croissante(const set<string>& s1, const set<string>& s2)
{
   if (s1.size() < s2.size())
      return true;
   else
      return false;
}
et je l'utilise comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sort(test.hyperaretes.begin(),test.hyperaretes.end(),taille_croissante);
Mais voila, pour ce qui est des fréquences je ne vois pas comment faire car pour les calculer, je dois me servir du deuxième conteneur de ma classe hypergraph et je pense dont utiliser une méthode. J'ai alors essayé de faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
bool hypergraph::frequence_croissante(const set<string>& s1, const set<string>& s2)
{
...
}
et je l'appelle comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sort(test.hyperaretes.begin(),test.hyperaretes.end(),test.frequence);
J'ai une erreur à la compilation:

232 C:\programmation\projet\vect.cpp no matching function for call to `sort(__gnu_cxx::__normal_iterator<std::set<std::string, std::less<std::string>, std::allocator<std::string> >*, std::vector<std::set<std::string, std::less<std::string>, std::allocator<std::string> >, std::allocator<std::set<std::string, std::less<std::string>, std::allocator<std::string> > > > >, __gnu_cxx::__normal_iterator<std::set<std::string, std::less<std::string>, std::allocator<std::string> >*, std::vector<std::set<std::string, std::less<std::string>, std::allocator<std::string> >, std::allocator<std::set<std::string, std::less<std::string>, std::allocator<std::string> > > > >, <unknown type>)'

Si vous voyez mon problème ou si je n'est pas été assez clair n'hésitez pas.

Merci de votre aide