2011-12-16 23 views
0

私は基本的に作成するオブジェクトのリストを持っていますが、その一部は他に依存しています。 各オブジェクトは、それが依存するオブジェクトの「ID」(私の場合は文字列)のリストを保持します。C++のオブジェクト間の依存関係を解決する

これからは、順序付きリストが必要です。最初の要素は依存性のない要素になり、最新のものは最も依存性の高い要素になります。私は、オブジェクトのうち、このリストを取得したいのですが、次のコードからそう...

をこのリストのいずれかによって要素1を取った後、スムーズに動作するはずそれらを作成:

typedef std::string Id; 
typedef std::set <ID> Ids; 

struct ObjectInformation 
{ 
    Id const& getId(); 
    Ids const& getDependencies(); 
}; 
std::vector <ObjectInformation> objects; 

私はBGLを知っています(ブーストグラフライブラリでも可能ですが、複雑すぎるようですが)

+0

循環依存関係がないと仮定する必要があります。さもなければあなたがしたいことは不可能です。 (つまり、循環性がある場合は、サークル内の何かが、それが依存するものの前に、またはそれと同時に作成する必要があります)。 –

答えて

3

これはtopological sortの一番の例です。既存のトポロジカルソートの実装を使用するのが最も簡単なので、なぜあなたが不適格を失うのかわかりません。このpiece of documentationの例では、

関連する問題