casafa | Merci pour vos réponses...je me demande qu'est ce qui est le plus approprié pour mon problème : map ? set ?
-Le calcul de la distance est pas mal comme idée, je me demande bien pourquoi je n'y ait pas pensé plutôt
-Pour ce qui est de Line comme key, je voit pas comment ça pourrait fonctionner...que va comparer le std::map ?
J'ai fait ce code :
Code :
- struct comp
- {
- bool operator()(const Line* line1, const Line* line2) const
- {
- float dist1 = line1->p1->distance(line2->p1);
- float dist2 = line1->p2->distance(line2->p2);
- if( (dist1 + dist2) < 0.002 )
- return false;
- else
- return true;
- }
- };
- int main()
- {
- set<Line *, comp> test;
- Line *line1 = new Line(new Point(1.0, 2.0, 4.0), new Point(4.0, 5.0, 6.0));
- Line *line2 = new Line(new Point(1.0, 2.0001, 4.0), new Point(4.0, 5.0, 6.0));
- Line *line3 = new Line(new Point(8.0, 9.0, 10.0), new Point(11.0, 12.0, 13.0));
- test.insert(line1);
- test.insert(line2);
- test.insert(line3);
- cout<<"Resultat : "<<test.size()<<endl;
- return 0;
- }
|
Résultat : 2
J'ai donc ce que je voulait : line1 et line2 sont tellement proche qu'elle sont considéré comme 2 lignes identiques.
Il me reste un problème : comment incrémenter nbLine quand un insert à "échoué" ? Message édité par casafa le 30-12-2007 à 19:42:03
|