Copie de vector
RésoluChar Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je ne comprends pas pourquoi le vector restecorps_s n'est pas copié dans le vector corps_s à la ligne 15. J'ai vu ça dans mon débogueur, ainsi qu'en exécutant le programme
std::vector<std::string> parse::corps(){ std::vector<std::string> restecorps_h, corps_s, restecorps_s, restecorps1_h; std::string mot_s; if (a.valeur == mot) { mot_s = a.lexeme; consommer(mot); restecorps_h.push_back(mot_s); while (a.valeur == mot){ mot_s = a.lexeme; consommer(mot); restecorps_h.push_back(mot_s); restecorps1_h = restecorps_h; restecorps_s = restecorps1_h; } corps_s = restecorps_s; return corps_s; } else exit(4); }
Quelqu'un a une idée?
Linux / Firefox 109.0
- Copie de vector
- Copie cachée - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
- Copie rapide - Télécharger - Gestion de fichiers
2 réponses
Bonjour,
Une chose certaine, si on copie un vector<>, il est sûr que la copie est effectuée.
Je ne sais pas quand et comment tu vérifies que la copie n'est pas faite.
Déjà les variable corps_s et restecorps1_h ne servent à rien et alors même en ôtant toutes les optimisations, c'est tellement flagrant que ces variables ont pues être enlevées. Le débogueur serait alors incapable de les afficher correctement.
L'autre possibilité est qu'il y a quelque part un écrasement de données te faisant perdre le vector<> retournée par la fonction, là il faut un peu plus examiner ce qu'il se passe ailleurs.
Bonjour,
je rejoins Dalfab, corps_s ne sert à rien : c'est une variable locale qui est affecté avant d'être retourné et détruite (passage par copie). Elle reste identique à restecorps_s. Il y a de grandes chances que l'optimiseur fasse en gros : "return restecorps_s;"
Tu peux essayer de désactiver les optimisations voir si ça fait un peu mieux ce que tu veux.