我正在尝试建立一个联系人管理器。我想到了一个具有几个属性的数据结构:
它是树状的,这意味着每条信息都可以分成子块(每个节点都有子节点)。例如,一个名为的字段
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)。
欢迎任何想法。