Arrays swift:二维数组和字典之间的区别

Arrays swift:二维数组和字典之间的区别,arrays,swift,dictionary,swift3,Arrays,Swift,Dictionary,Swift3,我有点混淆了这两者。我知道字典的初始化方式如下: var Dictionary=[Int:Int] var Arr=[Int[Int]]() 就像[1:100,2:150]或[1:“猫”,2:“狗”] 但我对2d数组有点困惑。我认为它是这样初始化的: var Dictionary=[Int:Int] var Arr=[Int[Int]]() 看起来像[[1,4],[5,3],它应该有x和y坐标 我想知道这两者是否可以互换,在制作这个网格时,哪一个工作得最好?如果我想在坐标[2,1]=6处

我有点混淆了这两者。我知道字典的初始化方式如下:

var Dictionary=[Int:Int]
var Arr=[Int[Int]]()
就像
[1:100,2:150]
[1:“猫”,2:“狗”]

但我对2d数组有点困惑。我认为它是这样初始化的:

var Dictionary=[Int:Int]
var Arr=[Int[Int]]()
看起来像
[[1,4],[5,3]
,它应该有
x
y
坐标

我想知道这两者是否可以互换,在制作这个网格时,哪一个工作得最好?如果我想在坐标
[2,1]=6处存储信息,我应该使用哪个

 [0,1,0,0]
 [0,1,1,0]
 [1,0,0,1]

不要因为数组和字典都使用
[]
符号作为文本而感到困惑。两者完全不同。当您有一组键且每个键都有一个关联的值时,将使用字典。二维数组本质上是一个值矩阵

对于你的小矩阵,你需要一个2d数组。可以创建和初始化二维阵列,如下所示:

var matrix : [[Int]] = Array(repeating: Array(repeating: 0, count: 10), count: 10)
这将创建一个充满零的10x10矩阵。要设置值,可以执行以下操作:

matrix[x][y] = 6
只要
x
0
行-1
y
0
列-1

或者读取如下值:

let value = matrix[x][y]

不要因为数组和字典都使用
[]
符号作为文本而感到困惑。两者完全不同。当您有一组键且每个键都有一个关联的值时,将使用字典。二维数组本质上是一个值矩阵

对于你的小矩阵,你需要一个2d数组。可以创建和初始化二维阵列,如下所示:

var matrix : [[Int]] = Array(repeating: Array(repeating: 0, count: 10), count: 10)
这将创建一个充满零的10x10矩阵。要设置值,可以执行以下操作:

matrix[x][y] = 6
只要
x
0
行-1
y
0
列-1

或者读取如下值:

let value = matrix[x][y]

Array是一种有序的集合类型,包含可由索引访问的值,Dictionary是一种无序的集合类型,包含可由键访问的键/值对。简单地说,您可以将Array想象成martix,将Dictionary想象成树。Array是一种有序的集合类型,包含可由索引访问的值,Dictionary是一种无序的集合类型,包含可由键访问的键/值对。简单地说,您可以将数组想象为martix,将字典想象为树。您能否添加一个示例,说明字典的工作方式与2d数组的工作方式完全相同?@LinusG。为什么?字典的例子不胜枚举。字典不适用于矩阵。我只是觉得直接比较会很好:)@LinusG。没有直接的比较,因为你不会为此使用字典。它有一个完全不同的用途,与OP的需要无关。你能举一个例子,说明字典是如何像处理2d数组一样工作的吗?@LinusG。为什么?字典的例子不胜枚举。字典不适用于矩阵。我只是觉得直接比较会很好:)@LinusG。没有直接的比较,因为你不会为此使用字典。它有完全不同的用途,与OP的需求无关。