Je souhaite créer un ensemble de points triés en fonction des coordonnées x ou y.C++, comparateur, pointeur vers la fonction
typedef std::set <Point2D, sorter> Points;
Pour le type de «Point», je voudrais utiliser un comparateur différent. La première trie points selon les coordonnées x, la seconde selon les coordonnées Y:
typedef std::set <Point2D, sortPointsByX()> Points;
typedef std::set <Point2D, sortPointsByy()> Points;
où
class sortPoints2DByX
{
public:
bool operator() (const Point2D &p1, const Point2D &p2);
};
class sortPoints2DByY
{
public:
bool operator() (const Point2D &p1, const Point2D &p2);
};
est-il possible de créer un pointeur sur la classe constructeur sortPoints2DByX/sortPoints2DByY en Déclaration de points
typedef std::set <Point2D, pointer_to_somparator_class> Points;
et par la nécessité d'utiliser l'un d'entre eux?
Je dois avoir un type de données peut être trié de deux façons.
Si cette idée est fausse, existe-t-il une solution plus appropriée?
je dois calculer la médiane des coordonnées x et y ...
Merci pour votre aide ...
est le problème que vous avez besoin de changer la façon dont un ensemble est trié, ou est le problème que vous devez être en mesure de passer la faire le tour sans avoir les choses que vous lui passez pour avoir deux méthodes différentes pour les deux types de jeu différents? – Omnifarious
J'ai deux solutions qui sont toutes deux basées sur le fait que ':: std :: set' prendra un comparateur comme argument constructeur. Cela ne vous permettra pas de réorganiser un ensemble à la volée, mais il vous permettra d'utiliser le même type pour conserver deux ordres différents dans deux objets différents. @ André Caron a aussi une solution basée sur l'argument du constructeur ':: std :: set'. – Omnifarious