Ajouter un commentaire

fredericmazue

Deux remarques, si tu me le permets

std::vector<le_type> _v

Tu ne devrais pas appeler une variable _V, c'est à dire commençant par un underscore (souligné). Ce type de dénomination est réservé à l'implémentation. Si tu veux mettre un souligné c'est:

std::vector<le_type> v_

Ensuite
copieApreTraitements(std::vector _v)
Je sais bien que tu as écrit du pseudo code, mais je ne peux m'empêcher de te dire que tu ne devrais pas passer le vector par valeur. Si tu le fais, il y a copie du vector et de tous les éléments qui sont dedans. Je sais bien qu'on va encore me dire que je fais un buzz sur la charge ;) mais je préfère un passage par référence :) Donc:

copieApreTraitements(std::vector<le_type>& v_

Quote:
Mais en utilisant cette fonction avec comme parametre un vector dont le nombre d'entrée est de 4, je vais produire une très jolie erreur de dépassement de mémoire.

En effet
Quote:
j'ai essayer un bloc try - catch mais ça n'a pas l'air de relever une exception

En aucun cas ça ne va lever une exception. Les conteneurs de la stl ne sont pas conçu dans cet esprit. On est pas en Java là :)

Quote:
Je pourrais tester la taille du vector passé

Oui. Mais si tu ne veux pas le faire, alors deux solutions, dans l'ordre de mes préférences.

- repenser ton code pour ne pas te trouver dans cette situation que je trouve étrange. Mais bon j'ai peut être tort. Je n'ai pas de vision d'ensemble de ce que tu fais.

- Ecrire le conteneur que tu veux avec les itérateurs ayant le comportement que tu veux. Dans ton cas, cela revient à définir un opérateur d'addition qui lève une exception en cas de dépassement.

Attention hein, j'ai dit opérateur d'addition, parce que je parle de ton pseudo code. Pour le code complet du conteneur et des itérateurs, il y a plus de travail. C'est difficile d'écrire un conteneur et c'est d'ailleurs pour cela que la première solution est la meilleure :)

Quote:
Sans pour autant passer à JAVA

T'as pas intérêt, sinon j'te cause plus :lol:

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 H  H  Y   Y  W     W   SSS   BBBB  
H H Y Y W W S B B
HHHH Y W W W SSS BBBB
H H Y W W W S B B
H H Y W W SSSS BBBB