【问题标题】:swift: difference between an 2d array and a dictionaryswift:二维数组和字典之间的区别
【发布时间】:2016-10-12 16:06:58
【问题描述】:

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

var Dictionary=[Int:Int]

就像[1:100,2:150][1:"cat",2:"dog"]

但我对二维数组有点困惑。我认为它的初始化如下:

var Arr=[Int[Int]]()

看起来像 [[1,4],[5,3]] 并且应该有一个 xy 坐标。

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

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

【问题讨论】:

  • Array 是一个 ordered 集合类型,其中包含可通过索引访问的值,Dictionary 是一个 unordered 包含可通过键访问的键/值对的集合类型。
  • 简单地说,你可以把数组想象成一个martix,把字典想象成一个tree

标签: arrays swift dictionary swift3


【解决方案1】:

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

对于您的小矩阵,您需要一个二维数组。你可以像这样创建和初始化一个二维数组:

var matrix : [[Int]] = Array(repeating: Array(repeating: 0, count: 10), count: 10)

这将创建一个填充零的 10x10 矩阵。要设置一个值,您可以这样做:

matrix[x][y] = 6

只要x0rows - 1 并且y0columns - 1

或读取如下值:

let value = matrix[x][y]

【讨论】:

  • 您能否添加一个示例,说明 exactly 字典如何像您对 2d 数组所做的那样工作?
  • @LinusG。为什么?字典的例子不胜枚举。而且字典不适用于矩阵。
  • 我只是觉得直接比较会很好:)
  • @LinusG。没有直接比较,因为您不会为此使用字典。它有完全不同的用途,与 OP 的需求无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多