Le tri des Points de Coordonnées c++
dans une application de mesure de beaucoup de coordonnées 2d (x,y) d'un
de modèle. Ce modèle se compose d'un ensemble de points sur la grille fixe
les terrains dans les directions x et y. Ces coordonnées ont tous un score de
qualité et sont triés sur ce score. Ce que je veux faire est de trier
ces coordonnées en premier sur x et définir des groupes (régions) de
les coordonnées x qui appartiennent ensemble. Après cette étape, je veux trier les
différents x-régions en y-régions.
Après cela, je suis en mesure d'étiqueter les coordonnées du correspondant
motif (grille) de l'étiquette.
Exemple: mesure de coordonnées
(x,y)= (2,2),(2,3),(1,2),(1,3),(2,1),(1,1),(3,2),(3,3),(3 ,1)
après l'étape 1:
(x,y)= (1,2),(1,3),(1,1) (2,2),(2,3),(2,1) (3,2),(3,3),(3,1)
après l'étape 2:
(x,y)= (1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3 ,3)
Est-il une sorte de routine qui déjà s'acquitte de cette tâche? La routine
il devrait également travailler si certaines coordonnées du motif ne sont pas mesurés.
Quelqu'un peut-il me donner quelques indices, je ne suis pas expérimenté en c++
programmeur, mais peut-être avec quelques conseils que je peux faire le travail!
Je ne pense pas qu'il est de coutume de les comparer.
OriginalL'auteur Nichole Grace | 2011-08-27
Vous devez vous connecter pour publier un commentaire.
Si vous connaissez la plage de numéros que vous vous pourrait multiplier X par certains grand nombre, puis y ajouter à ce nombre. Maintenant, vous pouvez tout simplement de sorte que seul numéro, ou vous pouvez utiliser la bibliothèque stl faire comme d'autres l'ont décrit.
OriginalL'auteur SamFisher83
Vous avez besoin d'un stable algorithme de tri (sorcière ne pas changer l'ordre des éléments égaux). D'abord faire le tri par
y
de coordonner et de tri suivant parx
pour obtenir le résultat désiré:Par exemple:
avant: (x,y)= (2,2),(2,3),(1,2),(1,3),(2,1),(1,1),(3,2),(3,3),(3,1)
triés par y: (x,y)= (2,1),(1,1),(3,1),(2,2),(1,2),(3,2),(2,3),(1,3),(3,3)
triés par x: (x,y)= (1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)
OriginalL'auteur Andrey Kamaev
Vous pouvez faire cela en utilisant
std::sort
et personnaliséoperator<
, par exemple:Si vous ne voulez pas la "qualité" d'être stockées dans la structure, vous pouvez toujours faire appel à une fonction pour calculer dans
operator<
directement, par exemple:OriginalL'auteur Flexo