32 lines
820 B
Markdown
32 lines
820 B
Markdown
|
|
# ResourceDependencyGraph::HasCircularDependency
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
bool HasCircularDependency(ResourceGUID guid, Containers::Array<ResourceGUID>& outCycle) const
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
检测是否存在以指定节点为起点的循环依赖。使用 DFS 遍历依赖图,检测回路。
|
|||
|
|
|
|||
|
|
**参数:**
|
|||
|
|
- `guid` - 起始节点
|
|||
|
|
- `outCycle` - 输出参数,检测到的循环路径(包含形成环的节点 GUID)
|
|||
|
|
|
|||
|
|
**返回:** 如果存在循环依赖则返回 true,否则返回 false
|
|||
|
|
|
|||
|
|
**复杂度:** O(n + e)
|
|||
|
|
|
|||
|
|
**示例:**
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
Containers::Array<ResourceGUID> cycle;
|
|||
|
|
if (graph.HasCircularDependency(guid, cycle)) {
|
|||
|
|
printf("Circular dependency detected: ");
|
|||
|
|
for (const auto& g : cycle) {
|
|||
|
|
printf("%llu ", g.value);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- [ResourceDependencyGraph 总览](dependencygraph.md) - 返回类总览
|