Partage

supprimer un ou plusieurs elements d'un vector

en cours de boucle for :S

Sujet résolu
29 août 2018 à 14:39:00

Bonjour a tous, 

je vais essayer de faire court et concis:

1/ je parcours un fichier excel de liens electriques que je reclasse a ma sauce dans un set (pani doublons + classé) que je recopie a la fin dans un vector (oui je sais capilotracté m'enfin ca fais ce que je veux)

2/ je reparcours ce tableau afin d'en trier les patates et de mettre les lignes qui m'interessent dans un nouveau fichier excel de sortie.

Sachez qu'a ce stade tout se passe bien ! *fier*

3/ je me rends compte que je doit concaténer certains lien avant de les envoyer dans mon fichier de sortie...

pendant la boucle for de parcours de mon vector je rajoute donc une petite méthode qui se déclenche si je tombe sur un lien devant être concatené

4/ dans cette méthode, je reparcours mon tableau afin de trouver les autres lien a concaténer avec le premier (j'espere que vous suivez toujours !)

5/ je concatène mes différents liens et je renvoi en référence le nouveau lien complet que je met dans mon fichier excel (TADAAAAAA !!)

A ce stade certains d'entre vous auront deja compris mon probleme...

une fois le lien concatené je continu de parcourir mon tableau et la je tombe sur un des elements que j'ai deja concaténé... du coup je reconcatene le meme lien et je me retrouve avec un doublon dans mon fichier de sortie...

j'ai essayé de supprimer les elements utilisés lors de ma concatenation mais voila cela seme une legere pagaille au sein de mes index de vector et ca me melange tout creeant ainsi des liens qui ne doivent pas exister !!

en somme je dois supprimer des éléments d'un vector pendant que je le parcours (2 fois) sans pour autant semer le trouble dans mon index... je creuse, je me gratte l’encéphale... toujours rien...

méthode de suppression déjà essayé et semant  le trouble: 

for (i... etc...){

si (condition1)

{ boutDeLien1= tab[i];

tab.erase(tab.begin()+i);}

si (condition2)

{boutDeLien2=tab[i];

tab.erase(tab.begin()+i);}

}

quand j'y pense j'me dis que c'est un cas parlementaire de parcours dans un parcours avec suppression cela dit je bloque sur la résolution de ce problème.

en remerciant par avance toute la communauté,

Bonne journée.

Jullien :p

"Si Benjamin était le nom d'un médicament, ce serait un suppositoire !"

Vous êtes demandeur d'emploi ?
Sans diplôme post-bac ?

Devenez Développeur web junior

Je postule
Formation
en ligne
Financée
à 100%
29 août 2018 à 15:07:54

J'ai pas tout compris. o_O

Sinon, un flag pour indiquer que le bidule a déjà été "traité" (déjà concaténé), ça fait pas l'affaire ???

Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
29 août 2018 à 15:17:18

Pourquoi ne pas utiliser un conteneur plus adapté dans ce cas ?

std::map ferait parfaitement l'affaire par exemple.

Il existe également des méthodes de la STL pour manipuler les tableaux sans avoir à trop les parcourir "manuellement", tel que std::insert.

-
Edité par vanaur 29 août 2018 à 15:17:47

Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...$$ \begin{align} \nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\ \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\ \nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\ \nabla \cdot \vec{\mathbf{B}} & = 0 \end{align} $$
29 août 2018 à 15:36:14

J'me sen un peu stupide :S et pourtant j'ai planché  sur le sujet depuis un bon moment...

@Bacelar: tu n'as pas tout compris mais tu as trouvé la solution a mon probleme sans avoir besoin de refondre tout le code

@ Vanaur: tu as parfaitement raison, il faut absolument que je dompte cette STL au combien utile et puissante... mais ce sera pour une autre fois, je vais opter pour la premiere solution de bacelar...

grand merci a vous 2 pour votre temps et vos commentaires,

et bonne journée à tous.

"Si Benjamin était le nom d'un médicament, ce serait un suppositoire !"
29 août 2018 à 15:55:02

Buntaflex a écrit:

@ Vanaur: tu as parfaitement raison, il faut absolument que je dompte cette STL au combien utile et puissante... mais ce sera pour une autre fois, je vais opter pour la premiere solution de bacelar...

Y a pas besoin d'y passer 2 heures pour apprendre à utiliser une "map" ou un "set", et c'est un investissement immédiatement rentable, si par hasard c'est la bonne solution à ce problème auquel on ne comprend rien.

D'ailleurs la STL n'existe plus : maintenant c'est la bibliothèque C++ standard. Autant dire que ça ne fait plus partie des machins optionnels qu'on regardera un jour si on a le temps.

-
Edité par michelbillaud 29 août 2018 à 15:57:39

29 août 2018 à 16:15:22

michelbillaud a écrit:

D'ailleurs la STL n'existe plus : maintenant c'est la bibliothèque C++ standard. Autant dire que ça ne fait plus partie des machins optionnels qu'on regardera un jour si on a le temps.

Je ne savais pas ça.

Par contre, STL ou pas, le contenu est pratiquement similaire de toute façon.

-
Edité par vanaur 29 août 2018 à 16:15:49

Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...$$ \begin{align} \nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\ \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\ \nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\ \nabla \cdot \vec{\mathbf{B}} & = 0 \end{align} $$

supprimer un ou plusieurs elements d'un vector

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown