A ausência de contêineres de árvore no C STL
A C Standard Template Library (STL) não oferece nenhum contêiner de "árvore" . Esta omissão levanta a questão: porquê? E quais são as alternativas adequadas?
Por que não há contêineres de árvore no STL?
Existem duas razões pelas quais alguém pode desejar uma estrutura de dados em árvore:
1. Representação hierárquica de objetos: Modelagem de uma hierarquia de objetos em forma de árvore no código usando uma estrutura em árvore.
2. Características de acesso eficiente: Garantir acesso rápido a elementos com base em relações de ordenação, semelhantes às árvores de pesquisa binária.
Alternativas para estruturas de árvore
Contêineres associativos ordenados:
Esses contêineres operam efetivamente como árvores binárias balanceadas, garantindo tempos de acesso logarítmico eficientes para inserções, exclusões e pesquisas. Eles também oferecem vantagens adicionais, como:
Exemplo:
Se alguém quiser armazenar uma hierarquia de funcionários, com um CEO na raiz e vários níveis de subordinados, pode-se usar a std::map<:string std::vector>>. Aqui, as chaves do mapa seriam os nomes dos funcionários e os vetores associados conteriam os nomes de seus subordinados diretos.
Conclusão
Embora o C STL não forneça diretamente, oferece alternativas adequadas tanto para representação hierárquica quanto para características de acesso eficientes. A biblioteca de gráficos do Boost pode lidar com estruturas gráficas complexas, enquanto contêineres associativos ordenados fornecem acesso semelhante a uma árvore com uma interface genérica e bem estabelecida.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3