【发布时间】:2015-08-21 07:55:30
【问题描述】:
我正在玩弄一些依赖关系的东西,我已经走了很远,但现在我被卡住了。
假设我有一个这样的数据结构:
map<string, vector<string>> deps;
其中映射中的每个键都是一个依赖节点,该键的值是一个被依赖节点所依赖的节点列表。
此外,假设地图有 4 个键(A、B、C 和 D),具有以下依赖项:
我正在寻找一种算法(某种拓扑排序?),它将产生一个字符串向量,使得字符串按以下顺序出现:
F, B, C, D, A
0 1 2 3 4
此列表表示应评估依赖项的顺序。
【问题讨论】:
-
你能告诉我们为什么输出应该是这样的吗?
-
比如
F排在B之前有什么原因吗?或者它们是否可以轻松切换并输出为B, F, C, D, A? -
我最近做了这样的事情。我发现这个算法很有帮助:electricmonk.nl/log/2008/08/07/dependency-resolving-algorithm
-
@AndyG - 帖子的最后一行说明了订单的原因。
-
@Dess:我有点不同意。您需要告诉我们排序背后的逻辑。
F首先是因为它具有最多的依赖关系并且不依赖任何东西?给我们一个函数(即使是伪代码),它比较两个节点并告诉我们左侧是否应该排在右侧之前。
标签: c++ sorting dependencies