Любая стандартная реализация библиотеки для boost :: property tree - PullRequest
5 голосов
/ 24 января 2020

Есть ли альтернатива "boost / property_tree "?

На самом деле я пытаюсь удалить все реализации boost C ++ и использовать стандартные функции библиотеки , Я был в состоянии найти альтернативы некоторым другим реализациям boost C ++, но ни один из них для дерева свойств.

Мотивация не использовать повышение: в основном работа с добавленными зависимостями

bool Processor::init(std::istream& xml, std::istream& rioxml, const std::string& logconfig, const std::string& recoveryConfig) {
    boost::property_tree::ptree config;
    boost::property_tree::ptree rioconfig;
    try {
        boost::property_tree::xml_parser::read_xml(xml, config,
                boost::property_tree::xml_parser::no_comments);

        boost::property_tree::xml_parser::read_xml(rioxml, rioconfig,
                boost::property_tree::xml_parser::no_comments);

        return Initialize(config, rioconfig, logconfig, recoveryConfig);
    }
    catch(const boost::property_tree::xml_parser::xml_parser_error& ex){
        LOG_ERROR(LOGCAT_DEFAULT, MSGID_UNKNOWN, "Failed to parse business config: " << logconfig);
        return false;
    }
}

1 Ответ

0 голосов
/ 24 января 2020

Это зависит от того, как вы хотите использовать дерево.

Я думаю, что ответ Эмилио мог бы помочь вам в https://www.quora.com/Is-there-a-library-that-provides-a-tree-container-for-the-C-language

Если Ваше «дерево» предназначено для управления значениями при самосортировке и простом вставке / удалении, посмотрите на std :: map и std :: set

Если ваше дерево представляет собой иерархию узлов, имеющих потомки, то все вам нужно что-то вроде

template<class T>
struct tree
{
  T value;
  std::vector<tree> children;
};
...