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