Comment itérer un coup de pouce de la propriété de l'arbre?
Je suis sais approche pour stimuler la propriété de l'arbre et vu que c'est une bonne manière de stimuler la libs pour la programmation en c++.
Bien, j'ai un doute? comment itérer une propriété de l'arbre à l'aide des itérateurs ou similaires?
En référence il est juste un exemple de la navigation dans l'arborescence par:
BOOST_FOREACH
Mais est-il rien de plus? Quelque chose comme une stl-comme conteneur? Ce serait une meilleure solution, en parlant de la qualité du code....
Vous devez vous connecter pour publier un commentaire.
BOOST_FOREACH est juste un moyen pratique pour l'itération qui peut être fait par l'itérateur, begin() et end()
Et en C++11, c'est:
it
est maintenant un enfant de ptree, pas un itérateur comme dans le premier exemple.Voici ce que j'ai trouvé après beaucoup d'expérimentation. Je voulais partager dans la communauté, parce que je ne pouvais pas trouver ce que je voulais. Tout le monde semblait juste de publier la réponse de l'augmentation docs, que j'ai trouvé pour être insuffisant. De toute façon:
Voici le résultat:
Je suis tombé sur cette question récemment, et trouvé les réponses incomplètes pour mon besoin, alors je suis venu avec ce court et doux extrait de:
Important à noter est que chaque nœud, à l'exception du nœud racine peut contenir des données ainsi que les nœuds enfants. Le
if (!key.empty())
peu pour obtenir les données pour tous, mais le nœud racine, nous pouvons aussi commencer à construire le chemin de la boucle du nœud enfants le cas échéant.Vous commenceriez l'analyse en appelant
parse_tree(root_node, "")
et bien sûr, vous devez faire quelque chose à l'intérieur de cette fonction de faire il la peine de le faire.Si vous faites partie d'analyse où vous n'avez pas le chemin d'accès COMPLET, il suffit de retirer le
nkey
variable et de ses activités, et il suffit de passerit->first
à la fonction récursive.BFS d'impression à base de ptree transversal, Peut être utilisée que si nous voulons faire quelques manipulation algorithmique
Un ajout à la réponse Comment itérer un coup de pouce de la propriété de l'arbre? :
Dans le C++11 style basé sur la plage pour
for (auto node : tree)
, chaquenode
est unstd::pair<key_type, property_tree>
Alors que dans l'écrit manuellement itération
l'itérateur
it
est un pointeur vers une telle paire. C'est une petite différence dans l'utilisation. Par exemple, pour accéder à la clé, on pourrait écrireit->first
maisnode.first
.Publié une nouvelle réponse, parce que ma proposé de modifier l'original de la réplique a été rejeté par la suggestion de poster une nouvelle réponse.