Bonjour,
Je voudrais créer un container de type STL set avec une particularité:
la fonction de comparaison fait référence à une variable privée représentant un état interne. Pour simplifier au maximum, il s'agit d'un set de doubles, mais la comparaison entre deux doubles n'est pas celle par défaut, mais dépend d'une "origine" (qui est paramétrable) et qui intervient comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
bool less_than(double d1, double d2){
return fabs(d1 -_origine)< fabs(d2 - _origine);
}
Je sais qu'on peut se créer une classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
class origin_comp{
public:
  origin_comp(double o):_origine(o){}
  bool operator()(double d1, double d2){return fabs(d1 -_origine)< fabs(d2 - _origine);
private:
 double _origine;
};
mais je ne sais pas exploiter cette classe pour la création de mon ensemble
car mon compilateur rejette
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
origin_comp oc(1.0);
set<double, oc1>s1;
merci de votre attention