Pages

std::set : Comparateur pour des arêtes sujet

vendredi 31 janvier 2014




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:


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:


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




Aucun commentaire:

Enregistrer un commentaire