Swift中的一组可变数组

Ale*_*che 2 ios swift

我试图在Swift中实现一个邻接列表,基本上是一个列表集合,或者我想是一个可变数组的集合.我在Java中编写了一个Depth Search First实现,我想在Swift中编写相同的内容.此代码用于图表表示.有关如何做到这一点的任何想法?如果有帮助,这是Java中的代码:

public class Graph
{

    private List<Integer>[] adj;

    public Graph(int numberOfVertices)
    {
         adj = (List<Integer>[]) new List[numberOfVertices];
         ...
         for(int i = 0; i < numberOfVertices; i++)
               adj[i] = new ArrayList<Integer>(); 

    }
Run Code Online (Sandbox Code Playgroud)

即使知道如何声明包含可变数组数组的变量也会很棒.我在苹果或网络发布的书中没有找到任何关于如何做到这一点的信息.

dre*_*wag 6

您只需执行以下操作即可声明数组数组:

var nestedArrays : [[Int]] = []
nestedArrays.append([1, 2])
nestedArrays[0].append(3)
nestedArrays // [[1, 2, 3]]
Run Code Online (Sandbox Code Playgroud)

如果你想让它从一些空数组开始,你可以执行以下操作:

var nestedArrays = [[Int]](count: 10, repeatedValue: [])
Run Code Online (Sandbox Code Playgroud)

然后它将从10个空数组开始

你的课可能如下:

class Graph {
    var adj : [[Int]]

    init(numberOfVertices: Int) {
        adj = [[Int]](count: numberOfVertices, repeatedValue: [])
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想创建一个可以包含任何类型对象图形的类,您可以使用泛型:

class Graph<T> {
    var adj : [[T]]

    init(numberOfVertices: Int) {
        adj = [[T]](count: numberOfVertices, repeatedValue: [])
    }
}
Run Code Online (Sandbox Code Playgroud)