Swift の 2D 配列についてとても混乱しています。ステップごとに説明させてください。間違っていたら訂正していただけますか。
まず、空の配列の宣言:
class test{
var my2Darr = Int[][]()
}
次に、配列を埋めます。( my2Darr[i][j] = 0
i、j は for ループ変数です)
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? */
}
}
}
}
そして最後に、配列内の要素を編集する
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) { ... } */
}
}
ベストアンサー1
可変配列を定義する
// 2 dimensional array of arrays of Ints
var arr = [[Int]]()
または:
// 2 dimensional array of arrays of Ints
var arr: [[Int]] = []
または、事前定義されたサイズの配列が必要な場合(コメントの @0x7fffffff で説明されているように):
// 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)
位置の要素を変更する
arr[0][1] = 18
または
let myVar = 18
arr[0][1] = myVar
サブ配列を変更する
arr[1] = [123, 456, 789]
または
arr[0] += 234
または
arr[0] += [345, 678]
これらの変更前に 0 (ゼロ) の 3x2 配列があった場合、次のように変更されます。
[
[0, 0, 234, 345, 678], // 5 elements!
[123, 456, 789],
[0, 0]
]
したがって、サブ配列は変更可能であり、行列を表す初期配列を再定義できることに注意してください。
アクセス前にサイズ/境界を調べる
let a = 0
let b = 1
if arr.count > a && arr[a].count > b {
println(arr[a][b])
}
備考:3 次元配列と N 次元配列には同じマークアップ ルールが適用されます。