一尘不染

Swift 3 2D Int数组

swift

这实际上是一个非常简单的问题,但是一个小时后我无法解决我的问题。

我需要创建一个Int的二维数组。

var arr = [[Int]]()
or
var arr : [[Int]] = []

试图改变价值:

arr[x][y] = 1

致命错误:索引超出范围

我应该使用APPEND还是需要指定数组的大小?

我很困惑..


阅读 232

收藏
2020-07-07

共1个答案

一尘不染

真的不是那么简单。该行:

var arr : [[Int]] = []

创建一个类型为变量Array of Array of Int的数组,最初该数组为空。您需要像Swift中的其他数组一样填充它。

让我们回到单个数组:

var row : [Int] = []

您现在有一个空数组。您不能只做:

row[6] = 10

您首先必须向数组添加7个值,然后才能访问index处的值6(第7个值)。

使用数组数组时,您需要使用一组完整的内部数组来填充外部数组。并且每个内部数组都需要填充适当数量的值。

这是初始化数组数组的一种简单方法,假设您想要一个每个值都设置为0的预填充矩阵。

var matrix : [[Int]] = Array(repeating: Array(repeating: 0, count: 10), count: 10)

外部计数代表行数,内部计数代表列数。根据需要调整每个。

现在,您可以访问矩阵中的任何单元格:

matrix[x][y] = 1 // where x and y are from 0 to rows-1/columns-1
2020-07-07