en stockant un void* on perd à la fois l'information de type (donc de la sécurité)
Normalement, tu ne stockes qu'un seul type de données dans une map. La seule contrainte, c'est que tu ne peux pas le vérifier à la compilation, c'est au programmeur de faire attention.
on oblige potentiellement à allouer quelque chose sur le tas
Si pour toi, pointeur == alloué sur le tas, je crois que tu n'as pas bien saisi ce qu'est un pointeur.
Avec une map C++ j'aurais pu faire map et c'est plus efficace en stockage.
Effectivement, pour chaque élément ajouté à la map (implémenté avec un arbre bicolore), tu as déjà 3 pointeurs (fils droit, fils gauche et parent) et une couleur. Donc, ton économie de bout de chandelle, elle ne change pas grand chose...
Après pour l'opérateur de copie, en C, je vois pas trop d'inconvénient à utiliser memcpy ^^
Sauf que si ta structure contient un pointeur vers une structure allouée dynamiquement, tu ne sauras jamais quand tu dois la désallouer.
[^] # Re: moar features
Posté par rewind (Mastodon) . En réponse à la dépêche C11 n'est pas encore mort. Évalué à 1.
Normalement, tu ne stockes qu'un seul type de données dans une map. La seule contrainte, c'est que tu ne peux pas le vérifier à la compilation, c'est au programmeur de faire attention.
Si pour toi, pointeur == alloué sur le tas, je crois que tu n'as pas bien saisi ce qu'est un pointeur.
Effectivement, pour chaque élément ajouté à la map (implémenté avec un arbre bicolore), tu as déjà 3 pointeurs (fils droit, fils gauche et parent) et une couleur. Donc, ton économie de bout de chandelle, elle ne change pas grand chose...
Sauf que si ta structure contient un pointeur vers une structure allouée dynamiquement, tu ne sauras jamais quand tu dois la désallouer.