Bonsoir.
Tout d'abord, ma première question (je débute en C) :
Pourquoi préférer un tableau de pointeurs sur des éléments à un tableau de ces éléments ?
Mon prof nous a parlé d'un souci de performances lorsqu'on manipule les entrées du tableau, etc. Vous pouvez m'en dire plus ?
J'ai un projet à réaliser et du coup, j'aimerais savoir s'il est plus judicieux de réaliser un tableau de pointeurs sur des structures ou de simplement faire un tableau de structures.
Merci !
Donc si t'as des pointeurs, t'as des petits éléments et c'est très simple de passer de l'un à l'autre, tes structures étant ailleurs.
Je pense pas que la taille des éléments importe là dessus, au final pour passer d'un élément à l'autre c'est juste une histoire d'addition, faire +1 ou +100 impacte pas les performances je pense.
Si t'as des structures, elles sont toutes à la suite dans ton tableau, donc ça fait un gros objet très lourd à manipuler, et moins pratique.
Quand tu manipule un tableau tu manipule l'adresse du 1er élément, donc la taille a pas trop d'importance je pense.
Par contre effectivement si tu dois modifier ton tableau (donc en recréer un nouveau et copier en partie les anciennes valeurs) ça sera plus simple de copier X pointeurs que de copier X structures (moins de valeurs à copier, puis ça prendra moins de place en RAM le temps de la copie).
Merci pour vos réponses, ça confirme un peu ce que je pensais.
En fait j'avais un souci quand j'essayais de créer un tableau dynamique de pointeurs sur des structures, et un ami m'a dit qu'une structure était déjà un pointeur donc que ça ne servait à rien de faire un tableau de pointeurs sur des structures. C'est vrai ça ?
Mon projet c'est la gestion d'une ludothèque : je vais avoir des fichiers de données du type :
1 DUPONT Jean jean.dupont@gmail.com 01/01/2017
2 DUBOIS Marc marc.dubois@gmail.com 12/10/2016
...
pour des adhérents, pareil pour des jeux, etc... Et je dois être capable de lire ces fichiers, pour les traiter (ajouter/modifier/supprimer des adhérents, des jeux, voir s'ils doivent renouveler leur inscription (valable 1 an). Pour ensuite tout sauvegarder dans ces mêmes fichiers.
Quelles sont les méthodes les plus judicieuses ?
Et oui j'ai appris les listes chaînées, j'en ai d'ailleurs fait une pour les jeux.
un ami m'a dit qu'une structure était déjà un pointeur donc que ça ne servait à rien de faire un tableau de pointeurs sur des structures. C'est vrai ça ?
Non.
Le 17 janvier 2017 à 08:03:22 LEpigeon-888 a écrit :
Non.
Ah, d'accord ! Ça va un peu plus dans le sens de ce que nous disait le prof... Du coup maintenant j'aimerais bien savoir comment utiliser les bons outils pour réaliser mon projet (tableaux de pointeurs sur des structures, listes, ... ?)
oui il y a des differences de performances. La difference depend de ce que tu veux faire avec tes donnes. Tu as des differences de cache en fonction de ce que tu fais. Il y a aussi des difference en terme de vectorizatin.
lis sur le sujet "array of structures or structure of arrays", des fois appelle AoS or SoA.