bonjour,

je dois utiliser une priority_queue mais avec mon prorper operateur de comparaison.

voici comment je défini la priority_queue.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
        std::priority_queue< std::vector<std::set<CClause*> * >, CompareClause() > Q;
et le compareClause est ici.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 
struct CompareClause{
 
    bool operator ()( const std::set<CClause*> *p, const std::set<CClause*> *q ) 
    { 
        return p->size() < q->size() ; 
    } 
 
};

j'aurais cru qu'il fallait utiliser les foncteurs, mais il m'envoi ballader.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
ocuments/Logic$ make -j 2
g++ -o Antichaine.o -c Antichaine.cpp -Wall -ansi
Antichaine.cpp: In member function ‘void CAntichaine::construireA()’:
Antichaine.cpp:20: erreur: ‘CompareClause ()()’ is not a class, struct, or union type
Antichaine.cpp:20: erreur: patron de l'argument 3 est invalide
Antichaine.cpp:20: erreur: invalid type in declaration before ‘;’ token
Antichaine.cpp:20: attention : unused variable ‘Q’
make: *** [Antichaine.o] Erreur 1
elekis@carla:~/Documents/Logic$
le truc, c'est que l'on doit mettre pas mal d'élément dedans (des std::set<Clause*> ) et apres on doit les retirer un a un du plus grand au plus
petit. et on voudrais que le plus grand est celui qui a le plus grand nombre de clause.


merci

a+++