連絡先マネージャーを構築しようとしています。いくつかのプロパティを持つデータ構造を念頭に置いています。
これはツリーのようなものです。つまり、各情報をサブピースに分割できます (各ノードには子があります)。たとえば、 と呼ばれるフィールドは、、、 などのサブフィールド
addressで構成されている場合があります。streettownpostal 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あるという事実を実装するのが難しいことがわかりました(Boost の標準的な方法では、 、、 ... ノードが 1 つにまとめられます)。addressstreettownaddress
どんなアイデアでも大歓迎です。