0

我正在设计一个 Graph 类(列表和矩阵实现)。我必须提供诸如GetAdjacencies(int vertex).

一开始我就想到了返回,这样我就可以使用语句IEnumerable遍历结果。foreach但在下一刻,我意识到这是一个可怕的解决方案,因为每次GetAdjacencies(int vertex)发生都必须创建新列表。

接下来我想到了返回Enumerator,但是这样我就不能遍历结果 usingforeach语句。但是效率要好得多(我将实现许​​多图形算法,我对优化非常感兴趣)。

您能告诉我在 C# 中执行此操作的正确方法是什么吗?

4

1 回答 1

1

您不必在每次调用该方法时都创建新列表。例如使用迭代器块:

public IEnumerable<int> GetAdjacencies(int vertex)
{
    foreach (int i in adj[vertex])
        yield return i;
}

我不知道图形在您的代码中是如何准确表示的,因此获取邻接列表的详细信息可能会有所不同。

于 2013-11-09T22:23:12.370 回答