2012-11-01 23 views
0

我正在嘗試建立聯繫人管理器。我心裏有一個數據結構有幾個屬性:這種方案使用什麼類型的樹?

  • 是樹狀的,這意味着每條信息可以被分成subpieces(每個節點有孩子)。例如,稱爲address的字段可以由street,town,postal code等子字段組成。

  • 節點不必是唯一的,對於email領域的實例幾個節點應該能夠在下一個共存的情況下(在同一水平)

我想能夠使用類似路徑的方式探索樹,例如通過路徑訪問節點:address.streetname.first。訪問存在多次密鑰的節點可以像email[2]那樣完成。

這樣一棵樹可能看起來像:

contact 
    ↳ name 
     ↳ first  "foo" 
     ↳ last  "von bar" 
    ↳ email   "[email protected]" 
    ↳ email   "[email protected]" 
    ↳ 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中)。

歡迎任何想法。

回答