Je cherchais une solution efficace pour supprimer les doublons d'une liste C++.Supprimer les doublons d'une liste C++
La liste se compose de pointeurs vers un objet de classe qui a un ID d'attribut. Je veux supprimer les doublons en fonction de cet identifiant. Pour mon but, la méthode unique de la liste STL fonctionnera dans laquelle nous pouvons passer un BinaryPredicate. c'est-à-dire
void unique (BinPred pr);
J'ai cherché sur Internet comment utiliser cette méthode, n a obtenu un exemple dans lequel nous pouvons déclarer une fonction retournant une valeur booléenne et utiliser le "nom" de cette fonction comme prédicat binaire.
Mais ça ne marche pas. Qu'est-ce que ce prédicat binaire et comment l'utiliser? ... Toute aide sera appréciée. Voici l'extrait de code:
class SP_MDI_View {
..
..
bool removeDupli(SP_DS_Node*, SP_DS_Node*);
bool DoReductionGSPN(SP_DS_Node*, SP_ListNode*, SP_DS_Node*);
..
..
}
SP_MDI_View::DoReduction(...) {
SP_ListNode setZ; // typedef list<SP_DS_Node*> SP_ListNode, where SP_DS_Node is some other class
setZ.clear();
setZ.merge(tempsubset);
setZ.merge(setX);
setZ.push_back(*cs_iter);
setZ.unique(removeDupli); //Error here
}
bool SP_MDI_View::removeDupli(SP_DS_Node* first, SP_DS_Node* second) {
return ((first->GetId())==(second->GetId()));
}
Ceci est le lien qui a l'exemple dont je parlais: http://www.cplusplus.com/reference/stl/list/unique/ est-ce valide? mylist.unique (same_integral_part); mon compilateur ne le prend pas comme une instruction valide. –
Que voulez-vous dire "ne fonctionne pas"? Compiler l'erreur? Segfault? – SoapBox
post ** votre ** code, est-ce une fonction membre? Quelle est la portée? –