我基本上有一个要创建的对象列表,但其中一些依赖于其他对象。 每个对象都包含它所依赖的对象的“ID”列表(在我的例子中是字符串)。
从那里我只需要一个有序列表,其中第一个元素将是没有依赖的元素,最新的元素将是具有最多依赖性的元素。在此列表中逐个采用元素并创建它们应该可以顺利运行...
因此,从以下代码中,我想从对象中获取此列表:
typedef std::string Id;
typedef std::set < ID > Ids;
struct ObjectInformation
{
Id const& getId();
Ids const& getDependencies();
};
std::vector < ObjectInformation > objects;
我知道BGL(boost图库可以做到,但看起来有点太复杂了
答案 0 :(得分:3)
这是topological sort的一个主要示例。最简单的方法是使用现有的拓扑排序实现,所以我不确定为什么你取消了对boost的限制。请查看此piece of documentation,其中提供了一个示例。