C++(11) の設計上の問題は次のとおりです。
ノード/エッジを任意の属性にマップできるグラフデータ構造を作成したいとします。(それがグラフであることは実際には関係ありません。属性を持つ要素のコンテナである可能性がありますが、これは私の例です。)
このようなデータ構造を使用すると、すべてのノードに新しい属性を動的に追加できます。
Graph G;
G.addNodeMap("color", "white"); // map name, default value
...そしてノードに設定します:
node v;
G.setAttr("color", v, "blue");
...そして、メモリを節約するために属性も削除します。
G.deleteNodeMap("color");
G.addNodeMap
マップの識別子 (おそらく文字列) とエントリのデフォルト値を取ります。C++11 ではT
、「ノード マップ」の型は、与えられたデフォルトの引数から簡単に推測できます。std::vector<T>
ノードは単なるインデックスであるため、ノード マップ自体が である可能性があります。
std::vector<std::string> map1
問題: ベクトル、std::vector<std::double> map2
、std::vector<Foo> map3
....をどこに保存しますか?
この問題は、動的型付け言語では発生しません。この動作を C++ で実装するにはどうすればよいですか?