Recherche d'éléments communs dans deux vector - C++ - Programmation
Marsh Posté le 30-10-2002 à 17:03:36
il faut que les sequences soit triées avant tout => std::sort
et aulieu de faire ca
Code :
|
utilises plutot un back_inserter, c'est plus élégant
http://www.sgi.com/tech/stl/back_insert_iterator.html
Code :
|
Marsh Posté le 30-10-2002 à 17:17:41
Merci Taz@PPC , ca marche...
je suis pas encore très au point sur out ce qui touche aux itérateurs...
Marsh Posté le 30-10-2002 à 17:20:15
polyacetal a écrit a écrit : Merci Taz@PPC , ca marche... je suis pas encore très au point sur out ce qui touche aux itérateurs... |
raison de plus pour chercher les solutions simples
ca marche back_inserter?
y a aussi front_inserter mais ce n'est pas adapté pour un vector.
tu peux aussi simplement utilisé les std::set
Marsh Posté le 30-10-2002 à 17:24:31
Bah oui ca marche, en gros j'ai juste rajouté back_ devant insert_iterator et plus de problème...
Marsh Posté le 31-10-2002 à 05:06:30
theorie des ensembles:
definition des operations binaires,
union, intersection
union = tous les elements presents dans un ou l'autre ensemble
intersection = tous les elements presents dans l'un et dans l'autre ensemble.
Apres tu as la difference, qui est l'ensemble des elements presents dans l'un mais pas dans l'autre etc.. (c'est l'union prive de l'intersection).
En primaire on faisait faire ca aux gosses, on devait dessiner des patates avec des croix a l'interieur. je ne sais pas si ca se fait encore..
LeGreg
Marsh Posté le 31-10-2002 à 09:05:00
Ouais ca je sais, mais quand on parle d'ensembles; J'ai jamais intersecté des vecteurs; A moins que vous ne vouliez parler des composantes qui ont les memes valeurs?
A = {1, 2, 3, 4}
B = {3, 4, 0, 4}
A inter B donne quoi? {0, 0, 0, 4} ou {3, 4} ?
Marsh Posté le 31-10-2002 à 10:35:15
Si tu as la possibiliter de trier tes deux vector (avec std::sort), tu dois pouvoir utiliser "set_intersection".
Sinon tu peux utiliser un "set" en sortie (ensemble d'elements distincts).
Marsh Posté le 31-10-2002 à 10:43:33
Un exemple
Code :
|
Marsh Posté le 30-10-2002 à 16:52:13
Salut à tous,
voila, j'ai deux vector<int> et j'ai besion d'en construire un troisième qui contient l'intersection de ces deux vector....
voici donc mon code:
je crée donc mon vector résultat et je met qch dedans (sinon ca plante) ensiote je doit ajouter les valeurs une par une avec une méthode (add(int)) dans grp (un objet d'une classe perso.) Le problème est que dans "intersection" (le vector resultat) j'ai plusieur fois les memes numéros:
par ex:
numeros1 -> 123456
numeros2 -> 456789
intersection -> 44456
est-ce que quelqu'un voit une erreur dans mon code ou a connu le même problème...
Merci