我正在尝试建立一个联系人管理器。我想到了一个具有几个属性的数据结构:
它是树状的,这意味着每条信息都可以分成子块(每个节点都有子节点)。例如,一个名为的字段
address
可能由street
、town
、postal code
等子字段组成。节点不必是唯一的,例如该
email
字段的多个节点应该能够彼此相邻共存(在同一级别)
我希望能够使用类似路径的方式探索树,例如通过路径访问节点:address.street
或name.first
. 访问其密钥多次出现的节点可以像email[2]
.
所以一棵树可能看起来像:
contact
↳ name
↳ first "foo"
↳ last "von bar"
↳ email "foo@bar.com"
↳ email "baz@foo.de"
↳ address
↳ street "foostreet 42"
↳ town "barstadt"
↳ zip "04229"
↳ country "footopia"
↳ address
↳ street "barton alley 11"
↳ town "foostadt"
↳ zip "998877"
↳ country "alcabaz"
这是什么树?我尝试过使用 Boost property_tree
,但发现很难实现address
应该在高级别拆分的事实(Boost 的标准方法会将street
, town
, ... 节点放在一个中address
)。
欢迎任何想法。