L'absence de conteneurs d'arborescence dans la STL C
La bibliothèque de modèles standard C (STL) n'offre aucun conteneur "d'arborescence" . Cette omission pose la question : pourquoi ? Et quelles sont les alternatives appropriées ?
Pourquoi aucun conteneur d'arborescence dans STL ?
Il y a deux raisons pour lesquelles on pourrait désirer une structure de données arborescente :
1. Représentation hiérarchique des objets : Modélisation d'une hiérarchie d'objets arborescente dans le code à l'aide d'une structure arborescente.
2. Caractéristiques d'accès efficaces : Assurer un accès rapide aux éléments en fonction de relations d'ordre, similaires aux arbres de recherche binaires.
Alternatives pour les structures arborescentes
Ordonné Conteneurs associatifs :
Ces conteneurs fonctionnent efficacement comme des arbres binaires équilibrés, garantissant des temps d'accès logarithmiques efficaces. pour les insertions, les suppressions et les recherches. Ils offrent également des avantages supplémentaires, tels que :
Exemple :
Si l'on souhaite stocker une hiérarchie d'employés, avec un PDG à la racine et plusieurs niveaux de subordonnés, on peut utiliser un std::map<:string std::vector>>. Ici, les clés de carte seraient les noms des employés et les vecteurs associés contiendraient les noms de leurs subordonnés directs.
Conclusion
Bien que le C STL ne fournisse pas directement des conteneurs arborescents, il offre des alternatives appropriées à la fois pour la représentation hiérarchique et les caractéristiques d'accès efficaces. La bibliothèque de graphiques de Boost peut gérer des structures graphiques complexes, tandis que les conteneurs associatifs ordonnés fournissent un accès arborescent avec une interface générique et bien établie.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3