property_tree数据结构
Posted 用代码创造价值
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了property_tree数据结构相关的知识,希望对你有一定的参考价值。
这个是一个非常牛叉的东西!
虽然很小,但是,相当需要,相当重要!因为,很多的东西,我们不需要去开发,只需要去用就好了,这个东西的开发正的是极好极好的!
更重要的是,它来自大名鼎鼎的Boost库,这个库的重要性,已经是不言而喻了!
property_tree是一个保存了多个属性的树形数据结构!
可以使用类似访问路径的方式问任意节点的属性,而且每个节点都可以用类似STL的风格遍历子节点。
property_tree适合于应用程序的配置数据处理,可以解析xml、ini、json和info四种格式的文本数据据
它简直,就是最好的读取配置文件库!
什么是property_tree?
属性树库提供了一种数据结构,该数据结构存储了任意深度嵌套的值树,并通过一些键在每个级别上建立索引。树的每个节点都存储它自己的值,以及它的子节点和它们的键的有序列表。树允许通过路径方便地访问任何节点,这是多个键的的存储
此外,该库为许多数据格式提供了解析器和生成器,这些数据格式可以由这样的树表示,包括XML、INI和JSON
属性树是通用的数据结构,但特别适合保存配置数据。树提供了自己的树特有的接口,并且每个节点也是其子节点的stl兼容序列。【说白了,这就是一个自我嵌套的数据结构】
在概念上,节点可以被认为是以下结构:
struct ptree
{
data_type data;// data associated with the node
list< pair<key_type, ptree>> children;// ordered list of named children
};
许多软件项目在其生命周期的某一时刻开发了类似的工具,而属性树也以相同的方式产生。我们希望lib能拯救许多人,让他们不要重新发明轮子。
以上是关于property_tree数据结构的主要内容,如果未能解决你的问题,请参考以下文章
从 boost::property_tree 读取数组出现空白
使用 boost::asio::spawn 生成的 asio 处理程序中的 boost::property_tree::read_xml 段错误
如何扩展 boost property_tree 来处理自定义类型?