Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas
les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) on
copie un tableau 1 dans un tableau 2 de même type. Les méthodes que je
connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'élément
correspondant du tableau 2 ;
ii) en utilisant memcpy() ;
iii) en encapsulant les tableaux dans une structure et en assignant une
structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
*) il faut autant de structures que de type de tableaux quoiq'une
macro-fonction peut donner un peu de souplesse
*) il faut encapsuler dès le début chaque tableau que l'on voudra copier
et je me demande si elle est vraiment utilisée où si c'est juste une
astuce un peu gratuite.
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de
tableau ...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Alexandre BACQUART
candide wrote:
Bonjour,
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) on copie un tableau 1 dans un tableau 2 de même type. Les méthodes que je connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'élément correspondant du tableau 2 ;
ii) en utilisant memcpy() ;
iii) en encapsulant les tableaux dans une structure et en assignant une structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
*) il faut autant de structures que de type de tableaux quoiq'une macro-fonction peut donner un peu de souplesse
Pire, il faut autant de structures que de types *et de tailles* de tableaux. Mais bon.
*) il faut encapsuler dès le début chaque tableau que l'on voudra copier
et je me demande si elle est vraiment utilisée où si c'est juste une astuce un peu gratuite.
Un peu gratuit, juste pour pouvoir faire :
struct_array_dst = struct_array_src;
plutôt que :
memcpy(array_dst, array_src, array_size);
J'ai le sentiment que c'est pour ceux qui n'arrivent pas à bien accepter le fait qu'en C "les tableaux n'existent pas", leur sémantique étant celle des pointeurs (même s'il y a quelques facilités pour les tableaux statiques, cela s'arrête à peu près là).
Après, si le plus gros du programme consiste à copier des tableaux sans se soucier de leur taille, ça peut s'envisager, mais c'est ignorer l'alignement et le padding des structures qui ne feront qu'augmenter la consommation mémoire dans certains cas. Ce qui est plus ennuyeux, c'est qu'utiliser le tableau nécessitera soit de spécifier la structure (struct_array_dst.array[i]), soit d'introduire d'autres variables, soit de faire d'autre macros.
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de tableau ...
Pourquoi un 'vrai' codeur n'aurait jamais besoin de copier des choses ? La question est de savoir si l'opération est nécessaire car elle a un coût en mémoire occupée et en temps d'exécution.
-- Alex
candide wrote:
Bonjour,
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas
les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) on
copie un tableau 1 dans un tableau 2 de même type. Les méthodes que je
connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'élément
correspondant du tableau 2 ;
ii) en utilisant memcpy() ;
iii) en encapsulant les tableaux dans une structure et en assignant une
structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
*) il faut autant de structures que de type de tableaux quoiq'une
macro-fonction peut donner un peu de souplesse
Pire, il faut autant de structures que de types *et de tailles* de
tableaux. Mais bon.
*) il faut encapsuler dès le début chaque tableau que l'on voudra copier
et je me demande si elle est vraiment utilisée où si c'est juste une
astuce un peu gratuite.
Un peu gratuit, juste pour pouvoir faire :
struct_array_dst = struct_array_src;
plutôt que :
memcpy(array_dst, array_src, array_size);
J'ai le sentiment que c'est pour ceux qui n'arrivent pas à bien accepter
le fait qu'en C "les tableaux n'existent pas", leur sémantique étant
celle des pointeurs (même s'il y a quelques facilités pour les tableaux
statiques, cela s'arrête à peu près là).
Après, si le plus gros du programme consiste à copier des tableaux sans
se soucier de leur taille, ça peut s'envisager, mais c'est ignorer
l'alignement et le padding des structures qui ne feront qu'augmenter la
consommation mémoire dans certains cas. Ce qui est plus ennuyeux, c'est
qu'utiliser le tableau nécessitera soit de spécifier la structure
(struct_array_dst.array[i]), soit d'introduire d'autres variables, soit
de faire d'autre macros.
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de
tableau ...
Pourquoi un 'vrai' codeur n'aurait jamais besoin de copier des choses ?
La question est de savoir si l'opération est nécessaire car elle a un
coût en mémoire occupée et en temps d'exécution.
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) on copie un tableau 1 dans un tableau 2 de même type. Les méthodes que je connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'élément correspondant du tableau 2 ;
ii) en utilisant memcpy() ;
iii) en encapsulant les tableaux dans une structure et en assignant une structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
*) il faut autant de structures que de type de tableaux quoiq'une macro-fonction peut donner un peu de souplesse
Pire, il faut autant de structures que de types *et de tailles* de tableaux. Mais bon.
*) il faut encapsuler dès le début chaque tableau que l'on voudra copier
et je me demande si elle est vraiment utilisée où si c'est juste une astuce un peu gratuite.
Un peu gratuit, juste pour pouvoir faire :
struct_array_dst = struct_array_src;
plutôt que :
memcpy(array_dst, array_src, array_size);
J'ai le sentiment que c'est pour ceux qui n'arrivent pas à bien accepter le fait qu'en C "les tableaux n'existent pas", leur sémantique étant celle des pointeurs (même s'il y a quelques facilités pour les tableaux statiques, cela s'arrête à peu près là).
Après, si le plus gros du programme consiste à copier des tableaux sans se soucier de leur taille, ça peut s'envisager, mais c'est ignorer l'alignement et le padding des structures qui ne feront qu'augmenter la consommation mémoire dans certains cas. Ce qui est plus ennuyeux, c'est qu'utiliser le tableau nécessitera soit de spécifier la structure (struct_array_dst.array[i]), soit d'introduire d'autres variables, soit de faire d'autre macros.
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de tableau ...
Pourquoi un 'vrai' codeur n'aurait jamais besoin de copier des choses ? La question est de savoir si l'opération est nécessaire car elle a un coût en mémoire occupée et en temps d'exécution.
-- Alex
Thierry B.
--{ candide a plopé ceci: }--
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de tableau ...
Le vrai c0d3urz hésite entre memcpy et memmove, perd trois jours à monter un bench sans équivoque, et se rend finalement compte que passer un pointeur était amplement suffisant.
Plus sérieusement, mais je ne suis pas une référence, j'utilise memcpy pour copier les tableaux, et j'éviterais l'encapsulation dans la structure parce que, à mon sens, elle ne fait que masquer le fait que l'on copie des bits. Une question d'habitude...
-- « C'est toi qui l'as dit, c'est toi qui y es. » --{ NG, in fcol.debats }--
--{ candide a plopé ceci: }--
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de
tableau ...
Le vrai c0d3urz hésite entre memcpy et memmove, perd trois jours
à monter un bench sans équivoque, et se rend finalement compte
que passer un pointeur était amplement suffisant.
Plus sérieusement, mais je ne suis pas une référence, j'utilise
memcpy pour copier les tableaux, et j'éviterais l'encapsulation
dans la structure parce que, à mon sens, elle ne fait que masquer
le fait que l'on copie des bits. Une question d'habitude...
--
« C'est toi qui l'as dit, c'est toi qui y es. »
--{ NG, in fcol.debats }--
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de tableau ...
Le vrai c0d3urz hésite entre memcpy et memmove, perd trois jours à monter un bench sans équivoque, et se rend finalement compte que passer un pointeur était amplement suffisant.
Plus sérieusement, mais je ne suis pas une référence, j'utilise memcpy pour copier les tableaux, et j'éviterais l'encapsulation dans la structure parce que, à mon sens, elle ne fait que masquer le fait que l'on copie des bits. Une question d'habitude...
-- « C'est toi qui l'as dit, c'est toi qui y es. » --{ NG, in fcol.debats }--
espie
In article <4877d195$0$11560$, candide wrote:
Bonjour,
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) on copie un tableau 1 dans un tableau 2 de même type. Les méthodes que je connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'élément correspondant du tableau 2 ;
ii) en utilisant memcpy() ;
iii) en encapsulant les tableaux dans une structure et en assignant une structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
Il faut se poser la question: a quoi sert ton tableau ?
Dans pas mal de cas, si tu risques d'etre amene a le copier, c'est soit qu'il est element naturel d'une structure (ou assimile), par exemple, un jeu de coordonnees pour faire de la geometrie, et donc il suffit de copier la structure, ou alors, qu'il est suffisamment central a ton algorithme pour ne pas avoir de taille fixe...
Tu peux alors faire du memcpy/memmove ou une boucle... sur des compilos recents, le choix n'a pas enormement d'incidence...
Comme le dit fort justement Alex dans le message cousin, si tu commences a te poser des soucis d'optimisation, en general, tu finis par arriver a te passer de la copie...
In article <4877d195$0$11560$426a34cc@news.free.fr>,
candide <candide@free.invalid> wrote:
Bonjour,
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas
les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) on
copie un tableau 1 dans un tableau 2 de même type. Les méthodes que je
connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'élément
correspondant du tableau 2 ;
ii) en utilisant memcpy() ;
iii) en encapsulant les tableaux dans une structure et en assignant une
structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
Il faut se poser la question: a quoi sert ton tableau ?
Dans pas mal de cas, si tu risques d'etre amene a le copier, c'est soit
qu'il est element naturel d'une structure (ou assimile), par exemple,
un jeu de coordonnees pour faire de la geometrie, et donc il suffit de copier
la structure, ou alors, qu'il est suffisamment central a ton algorithme
pour ne pas avoir de taille fixe...
Tu peux alors faire du memcpy/memmove ou une boucle... sur des compilos
recents, le choix n'a pas enormement d'incidence...
Comme le dit fort justement Alex dans le message cousin, si tu commences
a te poser des soucis d'optimisation, en general, tu finis par arriver
a te passer de la copie...
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) on copie un tableau 1 dans un tableau 2 de même type. Les méthodes que je connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'élément correspondant du tableau 2 ;
ii) en utilisant memcpy() ;
iii) en encapsulant les tableaux dans une structure et en assignant une structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
Il faut se poser la question: a quoi sert ton tableau ?
Dans pas mal de cas, si tu risques d'etre amene a le copier, c'est soit qu'il est element naturel d'une structure (ou assimile), par exemple, un jeu de coordonnees pour faire de la geometrie, et donc il suffit de copier la structure, ou alors, qu'il est suffisamment central a ton algorithme pour ne pas avoir de taille fixe...
Tu peux alors faire du memcpy/memmove ou une boucle... sur des compilos recents, le choix n'a pas enormement d'incidence...
Comme le dit fort justement Alex dans le message cousin, si tu commences a te poser des soucis d'optimisation, en general, tu finis par arriver a te passer de la copie...
Pierre Maurette
candide, le 11/07/2008 a écrit :
Bonjour,
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) on copie un tableau 1 dans un tableau 2 de même type. Les méthodes que je connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'élément correspondant du tableau 2 ;
Il y a une variante, si on considère que la question a essentiellement de l'intérêt si les tableaux sont un peu charnus. C'est, s'il s'agit d'un tableau de "petits types" (typiquement des char), de copier des plus gros entiers. Des int, ou des long (Linux, 64bit par exemple). Soit on aligne la taille des tableau sur un multiple du gros type, soit on copie ce qui est divisible par le gros type, puis on complète par ce qui reste. Bref, on fait ce que fait peut-être memcpy().
ii) en utilisant memcpy() ;
Je pense que c'est ce qui est le mieux. C'est lisible, portable, à priori optimisé pour chaque implémentation. Peut-être que memcpy() peut utiliser des tecniques câblées (DMA) ? J'utilise la variante de la méthode i), mais je pense que ce n'est pas bien, c'est une mauvaise habitude que j'ai prise de ne pas assez utiliser les fonctions de la bibliothèque standard.
iii) en encapsulant les tableaux dans une structure et en assignant une structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
*) il faut autant de structures que de type de tableaux quoiq'une macro-fonction peut donner un peu de souplesse *) il faut encapsuler dès le début chaque tableau que l'on voudra copier
et je me demande si elle est vraiment utilisée où si c'est juste une astuce un peu gratuite.
Première fois que je vois ça. Assez obfuscatoire à mon sens. Pour passer le tableau à des fonctions externes, standards en particulier, il faudra passer s.t, et pour les fonctions perso, on risque "d'oublier" et passer un gros tableau par copie de valeur.
-- Pierre Maurette
candide, le 11/07/2008 a écrit :
Bonjour,
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas les
lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) on copie un
tableau 1 dans un tableau 2 de même type. Les méthodes que je connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'élément
correspondant du tableau 2 ;
Il y a une variante, si on considère que la question a essentiellement
de l'intérêt si les tableaux sont un peu charnus.
C'est, s'il s'agit d'un tableau de "petits types" (typiquement des
char), de copier des plus gros entiers. Des int, ou des long (Linux,
64bit par exemple). Soit on aligne la taille des tableau sur un
multiple du gros type, soit on copie ce qui est divisible par le gros
type, puis on complète par ce qui reste.
Bref, on fait ce que fait peut-être memcpy().
ii) en utilisant memcpy() ;
Je pense que c'est ce qui est le mieux. C'est lisible, portable, à
priori optimisé pour chaque implémentation. Peut-être que memcpy() peut
utiliser des tecniques câblées (DMA) ?
J'utilise la variante de la méthode i), mais je pense que ce n'est pas
bien, c'est une mauvaise habitude que j'ai prise de ne pas assez
utiliser les fonctions de la bibliothèque standard.
iii) en encapsulant les tableaux dans une structure et en assignant une
structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
*) il faut autant de structures que de type de tableaux quoiq'une
macro-fonction peut donner un peu de souplesse
*) il faut encapsuler dès le début chaque tableau que l'on voudra copier
et je me demande si elle est vraiment utilisée où si c'est juste une astuce
un peu gratuite.
Première fois que je vois ça. Assez obfuscatoire à mon sens. Pour
passer le tableau à des fonctions externes, standards en particulier,
il faudra passer s.t, et pour les fonctions perso, on risque
"d'oublier" et passer un gros tableau par copie de valeur.
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) on copie un tableau 1 dans un tableau 2 de même type. Les méthodes que je connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'élément correspondant du tableau 2 ;
Il y a une variante, si on considère que la question a essentiellement de l'intérêt si les tableaux sont un peu charnus. C'est, s'il s'agit d'un tableau de "petits types" (typiquement des char), de copier des plus gros entiers. Des int, ou des long (Linux, 64bit par exemple). Soit on aligne la taille des tableau sur un multiple du gros type, soit on copie ce qui est divisible par le gros type, puis on complète par ce qui reste. Bref, on fait ce que fait peut-être memcpy().
ii) en utilisant memcpy() ;
Je pense que c'est ce qui est le mieux. C'est lisible, portable, à priori optimisé pour chaque implémentation. Peut-être que memcpy() peut utiliser des tecniques câblées (DMA) ? J'utilise la variante de la méthode i), mais je pense que ce n'est pas bien, c'est une mauvaise habitude que j'ai prise de ne pas assez utiliser les fonctions de la bibliothèque standard.
iii) en encapsulant les tableaux dans une structure et en assignant une structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
*) il faut autant de structures que de type de tableaux quoiq'une macro-fonction peut donner un peu de souplesse *) il faut encapsuler dès le début chaque tableau que l'on voudra copier
et je me demande si elle est vraiment utilisée où si c'est juste une astuce un peu gratuite.
Première fois que je vois ça. Assez obfuscatoire à mon sens. Pour passer le tableau à des fonctions externes, standards en particulier, il faudra passer s.t, et pour les fonctions perso, on risque "d'oublier" et passer un gros tableau par copie de valeur.
-- Pierre Maurette
candide
Avec un peu de retard, je vous remercie de vos différentes réponses.
Avec un peu de retard, je vous remercie de vos différentes réponses.
Avec un peu de retard, je vous remercie de vos différentes réponses.
-ed-
On 11 juil, 23:33, candide wrote:
Bonjour,
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) o n copie un tableau 1 dans un tableau 2 de même type. Les méthodes que j e connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'él ément correspondant du tableau 2 ;
ii) en utilisant memcpy() ;
iii) en encapsulant les tableaux dans une structure et en assignant une structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
*) il faut autant de structures que de type de tableaux quoiq'une macro-fonction peut donner un peu de souplesse *) il faut encapsuler dès le début chaque tableau que l'on voudra cop ier
et je me demande si elle est vraiment utilisée où si c'est juste une astuce un peu gratuite.
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de tableau ...
J'allais commencer par ça. C'est effectivement une opération coûteuse que l'on cherche à éviter. Ensuite, peu importe le codage, je fais confiance au compilateur pour faire les optimis
On 11 juil, 23:33, candide <cand...@free.invalid> wrote:
Bonjour,
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas
les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) o n
copie un tableau 1 dans un tableau 2 de même type. Les méthodes que j e
connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'él ément
correspondant du tableau 2 ;
ii) en utilisant memcpy() ;
iii) en encapsulant les tableaux dans une structure et en assignant une
structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
*) il faut autant de structures que de type de tableaux quoiq'une
macro-fonction peut donner un peu de souplesse
*) il faut encapsuler dès le début chaque tableau que l'on voudra cop ier
et je me demande si elle est vraiment utilisée où si c'est juste une
astuce un peu gratuite.
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de
tableau ...
J'allais commencer par ça. C'est effectivement une opération coûteuse
que l'on cherche à éviter. Ensuite, peu importe le codage, je fais
confiance au compilateur pour faire les optimis
Je voudrais savoir comment dans le monde des codeurs C (les vrais, pas les lopettes de codeurs du dimanche et de juillet-août comme moi ;) ) o n copie un tableau 1 dans un tableau 2 de même type. Les méthodes que j e connais sont :
i) via une boucle qui copie chaque élément du tableau 1 dans l'él ément correspondant du tableau 2 ;
ii) en utilisant memcpy() ;
iii) en encapsulant les tableaux dans une structure et en assignant une structure à l'autre.
Concernant la iii), je trouve qu'elle souffre de quelques limitations :
*) il faut autant de structures que de type de tableaux quoiq'une macro-fonction peut donner un peu de souplesse *) il faut encapsuler dès le début chaque tableau que l'on voudra cop ier
et je me demande si elle est vraiment utilisée où si c'est juste une astuce un peu gratuite.
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de tableau ...
J'allais commencer par ça. C'est effectivement une opération coûteuse que l'on cherche à éviter. Ensuite, peu importe le codage, je fais confiance au compilateur pour faire les optimis
-ed-
On 11 juil, 23:33, candide wrote:
Bonjour,
Je voudrais savoir comment dans le monde des codeurs C <...> on copie un tableau 1 dans un tableau 2 de même type.
<...>
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de tableau ...
J'allais commencer par ça. C'est effectivement une opération coûteuse que l'on cherche à éviter. Ensuite, il est probable qu'un memcpy() a de meilleures chances d'être optimisé correctement... Mais une boucle, avec les compilateurs modernes, ça peut probablement donner le même résultat... Dans le doute, faire des mesures, lire le code produit...
On 11 juil, 23:33, candide <cand...@free.invalid> wrote:
Bonjour,
Je voudrais savoir comment dans le monde des codeurs C <...> on
copie un tableau 1 dans un tableau 2 de même type.
<...>
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de
tableau ...
J'allais commencer par ça. C'est effectivement une opération coûteuse
que l'on cherche à éviter. Ensuite, il est probable qu'un memcpy() a
de meilleures chances d'être optimisé correctement... Mais une boucle,
avec les compilateurs modernes, ça peut probablement donner le même
résultat... Dans le doute, faire des mesures, lire le code produit...
Je voudrais savoir comment dans le monde des codeurs C <...> on copie un tableau 1 dans un tableau 2 de même type.
<...>
Vous allez peut-être me répondre qu'un vrai codeur ne copie pas de tableau ...
J'allais commencer par ça. C'est effectivement une opération coûteuse que l'on cherche à éviter. Ensuite, il est probable qu'un memcpy() a de meilleures chances d'être optimisé correctement... Mais une boucle, avec les compilateurs modernes, ça peut probablement donner le même résultat... Dans le doute, faire des mesures, lire le code produit...
candide
-ed- a écrit :
J'allais commencer par ça. C'est effectivement une opération coûteuse que l'on cherche à éviter.
Certes mais un mergesort par exemple entraîne des copies inévitables.
Ensuite, peu importe le codage, je fais confiance au compilateur pour faire les optimis
C'est noté.
-ed- a écrit :
J'allais commencer par ça. C'est effectivement une opération coûteuse
que l'on cherche à éviter.
Certes mais un mergesort par exemple entraîne des copies inévitables.
Ensuite, peu importe le codage, je fais
confiance au compilateur pour faire les optimis