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
网友评论