Каждый узел дерева свойств моделирует концепцию обратимой последовательности, обеспечивая доступ к своим ближайшим детям. Это означает, что повторение над<ptree
>(который является таким же, как его корневой узел - каждый узел также является поддеревом, с которого он начинается) повторяет только один уровень иерархии. Невозможно пересечь все дерево.
Очень важно помнить, что последовательность свойств, а неупорядочена ключом. Сохраняет порядок вставки. Он очень похож на std::list. Быстрый доступ к детям по имени предоставляется через отдельную структуру поиска. Не пытайтесь использовать алгоритмы, которые ожидают упорядоченную последовательность (например, двоичный поиск) на детях узла.
Дерево свойств раскрывает второй контейнероподобный интерфейс, называемый ассоциативным представлением. Его тип итератора является вложенным типом assoc_iterator (и его контрагентом const_assoc_iterator). Вы можете получить упорядоченный просмотр всех детей, используя упорядоченный_begin() и упорядоченный_end().
Ассоциативный взгляд также обеспечивает нахождение () и равное_диапазон () членов, которые возвращают asoc_iterators, но в остальном имеют ту же семантику, что и члены std::map того же имени.
Вы можете получить обычный итератор от assoc_iterator, используя функцию участника to_iterator(). Преобразовать другой путь невозможно.