Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift中的可变数组_Ios_Swift - Fatal编程技术网

Ios Swift中的可变数组

Ios Swift中的可变数组,ios,swift,Ios,Swift,我试图在Swift中实现一个邻接列表,基本上是列表的集合,或者我猜是可变数组的集合。我用Java为编写了一个深度搜索优先实现,我想用Swift编写同样的实现。此代码用于图形表示。你知道怎么做吗?以下是Java代码(如果有帮助): public class Graph { private List<Integer>[] adj; public Graph(int numberOfVertices) { adj = (List<Inte

我试图在Swift中实现一个邻接列表,基本上是列表的集合,或者我猜是可变数组的集合。我用Java为编写了一个深度搜索优先实现,我想用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>(); 

    }
公共类图
{
私人名单;
公共图(整数个顶点)
{
adj=(列表[])新列表[顶点数];
...
对于(int i=0;i

即使知道如何声明一个包含可变数组的变量也很好。我在apple或web发布的书中没有找到任何关于如何声明可变数组的信息。

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

var nestedArrays : [[Int]] = []
nestedArrays.append([1, 2])
nestedArrays[0].append(3)
nestedArrays // [[1, 2, 3]]
var nestedArrays = [[Int]](count: 10, repeatedValue: [])
如果希望从多个空阵列开始,可以执行以下操作:

var nestedArrays : [[Int]] = []
nestedArrays.append([1, 2])
nestedArrays[0].append(3)
nestedArrays // [[1, 2, 3]]
var nestedArrays = [[Int]](count: 10, repeatedValue: [])
然后从10个空数组开始

您的类可以如下所示:

class Graph {
    var adj : [[Int]]

    init(numberOfVertices: Int) {
        adj = [[Int]](count: numberOfVertices, repeatedValue: [])
    }
}
或者,如果您希望创建一个可以具有任何类型对象的图形的类,则可以使用泛型:

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

    init(numberOfVertices: Int) {
        adj = [[T]](count: numberOfVertices, repeatedValue: [])
    }
}
类图{
变量调整:[[T]]
初始(顶点数:Int){
adj=[[T]](计数:顶点数,重复值:[])
}
}

这是等同于您的代码的Swift:

class Graph {
    var adj : Array<Array<Int>>

    init (_ numberOfVertices: Int) {
        adj = Array<Array<Int>> (count: numberOfVertices, repeatedValue: [])
        for i in 1..numberOfVertices {
            adj[i] = Array<Int> ()
        }
    }
}

一种解决方法是对根数组使用AnyObject[],然后可以向该数组添加新数组array@LongNV没有理由使用像AnyObject这样的泛型类型。您可以在数组中指定数组的确切类型