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 :
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 :
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 :
1 2 3 4
| bool hypergraph::frequence_croissante(const set<string>& s1, const set<string>& s2)
{
...
} |
et je l'appelle comme ceci :
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
Partager