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