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的需求无关。