std::set : Comparateur pour des arêtes
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:
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:
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