J'ai un arbre énorme où les clés à l'intérieur des nœuds sont des indices dans un grand hash_map v, où v [clé] est un (grand) enregistrement associé à cette clé (comprend combien de nœuds dans l'arbre ont cette clé). À l'heure actuelle, la clé est un nombre entier. Ainsi, chaque noeud dispose d'un surcoût de stockage des pointeurs pour les enfants et un nombre entier.
Nous pouvons supprimer une clé d'un nœud dans l'arborescence. Nous ne pouvons pas stocker l'enregistrement réel dans le nœud de l'arborescence (parce que ce serait un disque de mémoire). Lorsqu'une clé est retirée d'un nœud, nous devons regarder v, mettre à jour le nombre et supprimer l'élément (et compacter le vecteur).Question de conception C++ (besoin pas cher pointeur intelligent)
Ceci appelle une implémentation de pointeur intelligent: où nous avons une propagation shared_ptr autour de l'arbre. Une fois que le dernier nœud faisant référence à la clé k est supprimé, l'objet est détruit.
Cependant, je me méfie des exigences de taille pour shared_ptr. J'ai besoin d'une référence de cheep compté compteur intelligent. Je me fiche de l'accès simultané.
Êtes-vous à court de mémoire? Avez-vous essayé boost :: shared_ptr? Cela ressemble un peu à une optimisation prématurée? Peut-être utiliser ce qui a été prouvé pour fonctionner en premier, puis optimiser plus tard? –