2010-07-15 4 views
1

Bonsoir (selon où vous êtes en ce moment). Je suis un peu confus avec les choses stl pour les ensembles triés ... Je veux stocker des pointeurs d'une classe personnalisée dans mon ensemble et je veux qu'ils soient triés par mon propre critère et pas seulement la taille du pointeur.C++: définir <customClasS * comment surcharger l'opérateur <(const customClass & * ...)?

Quelqu'un a une idée de comment faire cela? Comme il est impossible de le faire comme opérateur < (const foo & * rhs, const foo & * lhs) {..};

Des suggestions? Merci d'avance et cordialement.

Répondre

3

std::set Le deuxième paramètre de modèle est la méthode qu'il utilise pour les comparaisons. Donc, vous pouvez faire quelque chose comme ceci:

struct dereference_compare 
{ 
    template <typename T> 
    bool operator()(const T* pX, const T* pY) const 
    { 
     return *pX < *pY; 
    } 
}; 

typedef std::set<T*, dereference_compare> set_type; 
Questions connexes