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:
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;
};
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
struct EdgeCompare
{
  bool operator()(const Edge & e1, const Edge & e2) const
  {
    return e1.p1() < e2.p1() || e1.p2() < e2.p2();
  }
};
Mon but est de pouvoir supprimer une arête si celle-ci (ou son inverse) est déjà présente.

Ou est-ce que je me suis trompé?

Merci