Bonjour tout le monde,
J'ai souhaiterais avoir un std::set d'arêtes imposant l'unicité de celles ci. Je peux pas utiliser de pointeur dans ce cas de figure car je génère à la volée de nouvelles (ou non) arêtes.
Voici le squelette de ma classe arête:
J'ai essayé de faire un comparateur mais il ne fonctionne pas correctement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 class Edge { public: Edge(const std::shared_ptr<POINT> & p1, const std::shared_ptr<POINT> & p2) : m_p1(p1), m_p2(p2) { } virtual ~Edge() { } const std::shared_ptr<POINT> & p1() const { return m_p1; } const std::shared_ptr<POINT> & p2() const { return m_p2; } private: std::shared_ptr<POINT> m_p1, m_p2; };
Mon but est de pouvoir supprimer une arête si celle-ci (ou son inverse) est déjà présente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct EdgeCompare { bool operator()(const Edge & e1, const Edge & e2) const { return e1.p1() < e2.p1() || e1.p2() < e2.p2(); } };
Ou est-ce que je me suis trompé?
Merci
Partager