ツリーをリストに視覚的にマッピングする「TreeView」を実装したいと思います。リストのインデントは、マッピングされたノードの深さによって提供されます。私の具体的な問題は、2レベルの深さのツリーで、最初のレベルに100 000ノードがあり、各ノードには20ノードが含まれています(つまり、100 000フォルダー、それぞれに20ファイルが含まれています)。現在、ツリーからのマッピングをで維持していますstd::map
。これは、完全に拡張されたツリー("TreeView"で2000 000の潜在的に表示されるアイテム)の場合、次のようになります。
key value
0 pointer to parent node 0
20 pointer to parent node 1
40 pointer to parent node 2
...
これは、リストアイテム[0、19]が親ノード0によってカバーされ、[20、39]が親ノード1によってカバーされることを意味します...ノード0を折りたたむ場合、マッピングを更新する必要があります。
key value
0 pointer to parent node 0
1 pointer to parent node 1
21 pointer to parent node 2
...
ここで、リスト項目0は親ノード0でカバーされ、リスト項目[1、20]は親ノード1でカバーされます...つまり、std::map
ノード0を折りたたむときに99000値のキーを更新する必要があります。これは99000を意味します。他の方法ではキーを更新できないため、マップへの削除と挿入。どのデータ構造やコンテナを使用すると、マッピングツリー->リストをより少ない労力で更新できますか?