Question

Je recherche un conteneur qui fournit l'interface std :: map like, mais conserve l'ordre dans lequel les éléments sont insérés. Comme il n'y aura pas trop d'éléments dans la carte, les performances de recherche ne sont pas un gros problème. boost :: unordered_map fonctionne dans ce Cas? c'est-à-dire qu'il maintient l'ordre d'insertion. Je suis nouveau pour booster la bibliothèque et veux donc savoir ce que l’on entend exactement par «non ordonné»?

Était-ce utile?

La solution

unordered_map ne conserve pas l'ordre d'insertion. Non ordonné dans ce cas signifie que l'ordre observable des éléments (c'est-à-dire lorsque vous les énumérez) est non spécifié et arbitraire. En fait, je m'attendrais à ce que l'ordre des éléments dans un uneredered_map puisse changer au cours de la durée de vie de la carte, en raison du rehachage lors du redimensionnement de la carte (cela dépend toutefois de la mise en œuvre)

Autres conseils

En savoir plus sur Boost.Multiindex . Cela vous donne l’opportunité de créer un conteneur ayant à la fois accès aux données par clé (comme std :: map) et un accès séquencé aux données (comme std :: list).

Ceci est un exemple .

Lorsque j’ai eu besoin de cette dernière fois, j’ai utilisé un std::vector< std::pair<const Key, Value> >. Je n'avais pas besoin de beaucoup de l'interface std::map, donc je ne m'en suis pas préoccupé, mais il semble qu'il devrait être assez facile de gifler une interface semblable à une carte autour de cela.

Assurez-vous également de consulter les réponses à cette question .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top