Swift 中的二维数组 [英] Two-dimensional array in Swift
问题描述
我对 Swift 中的二维数组感到很困惑.让我一步一步地描述.如果我错了,请您纠正我.
首先;空数组的声明:
类测试{var my2Darr = Int[][]()}
第二次填充数组.(例如 my2Darr[i][j] = 0
其中 i, j 是 for 循环变量)
类测试{var my2Darr = Int[][]()在里面() {for(var i:Int=0;i<10;i++) {for(var j:Int=0;j<10;j++) {my2Darr[i][j]=18/* 这是正确的吗?*/}}}}
最后,编辑数组中的元素
类测试{var my2Darr = Int[][]()在里面() {....//同上代码}功能编辑(数字:整数,索引:整数){my2Darr[index][index] = 数字//这样对吗?如果索引更大怎么办//比 i 或 j ... 我们可以控制它吗if (my2Darr[i][j] == nil) { ... } */}}
定义可变数组
//Int 数组的二维数组var arr = [[Int]]()
或:
//Int 数组的二维数组var arr: [[Int]] = []
或者,如果您需要一个预定义大小的数组(如@0x7fffffff 在评论中提到的):
//Ints 数组的二维数组设置为 0.数组大小为 10x5var arr = Array(count: 3,重复值: Array(count: 2,重复值: 0))//...对于 Swift 3+:var arr = Array(repeating: Array(repeating: 0, count: 2), count: 3)
更改位置元素
arr[0][1] = 18
或
让 myVar = 18arr[0][1] = myVar
改变子数组
arr[1] = [123, 456, 789]
或
arr[0] += 234
或
arr[0] += [345, 678]
如果在这些更改之前您有 0(零)的 3x2 数组,现在您拥有:
<预><代码>[[0, 0, 234, 345, 678],//5 个元素![123, 456, 789],[0, 0]]因此请注意子数组是可变的,您可以重新定义表示矩阵的初始数组.
访问前检查大小/边界
让 a = 0让 b = 1如果 arr.count >一个&&arr[a].count >乙{打印(arr[a][b])}
备注:3 维和 N 维数组的标记规则相同.
I get so confused about 2D arrays in Swift. Let me describe step by step. And would you please correct me if I am wrong.
First of all; declaration of an empty array:
class test{
var my2Darr = Int[][]()
}
Secondly fill the array. (such as my2Darr[i][j] = 0
where i, j are for-loop variables)
class test {
var my2Darr = Int[][]()
init() {
for(var i:Int=0;i<10;i++) {
for(var j:Int=0;j<10;j++) {
my2Darr[i][j]=18 /* Is this correct? */
}
}
}
}
And Lastly, Editing element of in array
class test {
var my2Darr = Int[][]()
init() {
.... //same as up code
}
func edit(number:Int,index:Int){
my2Darr[index][index] = number
// Is this correct? and What if index is bigger
// than i or j... Can we control that like
if (my2Darr[i][j] == nil) { ... } */
}
}
Define mutable array
// 2 dimensional array of arrays of Ints
var arr = [[Int]]()
OR:
// 2 dimensional array of arrays of Ints
var arr: [[Int]] = []
OR if you need an array of predefined size (as mentioned by @0x7fffffff in comments):
// 2 dimensional array of arrays of Ints set to 0. Arrays size is 10x5
var arr = Array(count: 3, repeatedValue: Array(count: 2, repeatedValue: 0))
// ...and for Swift 3+:
var arr = Array(repeating: Array(repeating: 0, count: 2), count: 3)
Change element at position
arr[0][1] = 18
OR
let myVar = 18
arr[0][1] = myVar
Change sub array
arr[1] = [123, 456, 789]
OR
arr[0] += 234
OR
arr[0] += [345, 678]
If you had 3x2 array of 0(zeros) before these changes, now you have:
[
[0, 0, 234, 345, 678], // 5 elements!
[123, 456, 789],
[0, 0]
]
So be aware that sub arrays are mutable and you can redefine initial array that represented matrix.
Examine size/bounds before access
let a = 0
let b = 1
if arr.count > a && arr[a].count > b {
println(arr[a][b])
}
Remarks: Same markup rules for 3 and N dimensional arrays.
这篇关于Swift 中的二维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!