Je porte un c-code très ancien en C++ et j'ai parcouru une liste chaînée implémentée dans un tableau. L'élément est une structure simple:Réflexions sur la façon de mettre en œuvre?
struct element
{
void *m_ptrData;
short m_nextEntry;
short m_prevEntry;
};
En tant que tableau, vous disposez d'un accès rapide aux données si vous connaissez l'index. L'aspect liste chaînée permet de déplacer les éléments et de les "supprimer" de la liste. Les éléments peuvent être déplacés dans la liste, en fonction de la fréquence d'utilisation (en hausse pour MRU et en baisse pour LRU).
J'aime trouver une meilleure façon de mettre en œuvre cela que d'utiliser un autre tableau. Je voudrais utiliser STL, mais je ne suis pas certain quel conteneur est le mieux à utiliser.
Quelqu'un a des idées?
La vitesse d'accès aléatoire est-elle cruciale? Je veux dire que cela se produit * beaucoup *, par opposition à l'itération? – Guy
Cela dépend entièrement de la façon dont il est utilisé par le reste du code. Est-ce que l'accès direct est un moyen courant d'accéder aux éléments, ou est-ce fait principalement en parcourant la liste? Certains éléments sont-ils accessibles plus souvent que d'autres? – suszterpatt
Une fois, j'ai lu un article qui affirmait (et défendait) l'assertion que 'std :: vector' est presque toujours un meilleur choix que' std :: list', même si vous ajoutez/supprimez des éléments du milieu du conteneur . Je ne trouve pas l'article maintenant, donc j'ai ajouté ceci comme commentaire au lieu d'une réponse. Je serais reconnaissant si quelqu'un d'autre qui est au courant de l'article pourrait poster un lien. –