美文网首页程序员
Swift学习:二维数组

Swift学习:二维数组

作者: Think_cy | 来源:发表于2020-07-26 17:23 被阅读0次

Array

Array是Swift中的数组,它类似于Objective-C中的NSArray和C++中的vector。Array是struct的,也就是值类型的。

二维数组

在C中我们可以通过以下方式直接创建一个二维数组:

int array2D[3][4];  // 创建一个3行4列的二维数组
array2D[1][1] = 1;  // 对第1行1列出进行赋值

C++中的二维数组创建:

vector<vector<int> > array2D(3, vector<int>(4,0));  // 创建一个3行4列的二维数组

但是在Swift中,创建二维数组需要使用下面的方法创建:

var array2D = [[Int]]()
for _ in 0..<3 {
    var row = [Int]()
    for _ in 0..<4 {
        row.append(0)
    }
    array2D.append(row)
}
// 创建一个3行4列的二维数组

简单的写法如下:

var array2D = [[Int]](repeating: [Int](repeating: 0, count: 4), count: 3)

print(array2D[1][3])    // 输出0

更进一步,我们可以自己封装一个Array2D的类。

public struct Array2D {
    let rows: Int
    let cols: Int
    fileprivate var array: [Int]
    
    public init(rows: Int, cols: Int, value: Int) {
        self.rows = rows
        self.cols = cols
        array = .init(repeating: value, count: rows * cols)
    }
    
    // 重写下标
    public subscript(row: Int, col: Int) -> Int {
        get {
            return array[row * cols + col]
        }
        set {
            array[row * cols + col] = newValue
        }
    }
}


let array2D = Array(rows:3, cols: 4, value: 0) // 创建一个二维数组
print(array2D_01[1,2])  // 输出0

相关文章

网友评论

    本文标题:Swift学习:二维数组

    本文链接:https://www.haomeiwen.com/subject/aufglktx.html