swift: разница между 2d-массивом и словарем

#arrays #swift #dictionary #swift3

#массивы #swift #словарь #swift3

Вопрос:

Я как бы путаюсь между ними. Я знаю, что словарь инициализируется как:

 var Dictionary=[Int:Int]
  

и похоже [1:100,2:150] на или [1:"cat",2:"dog"] .

Но я немного смущен 2d-массивами. Я думаю, что он инициализируется как:

 var Arr=[Int[Int]]()
  

и выглядит так [[1,4],[5,3]] , и у него должна быть x y координата and .

Мне было интересно, являются ли они взаимозаменяемыми и что будет работать лучше всего при создании этой сетки? И если бы я хотел сохранить информацию в координатах [2,1]=6 , которые я должен использовать?

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

Комментарии:

1. Array — это упорядоченный тип коллекции, содержащий значения, доступные по индексу, Dictionary — это неупорядоченный тип коллекции, содержащий пары ключ / значение, доступные по ключу.

2. вкратце, вы можете представить массив как martix , а словарь как дерево .

Ответ №1:

Пусть вас не смущает тот факт, что и массивы, и словари используют [ ] символы для своих литералов. Они совершенно разные. словарь используется, когда у вас есть набор ключей, и каждый ключ имеет связанное значение. 2d-массив — это, по сути, матрица значений.

Для вашей маленькой матрицы вам нужен 2d-массив. Вы можете создать и инициализировать 2d-массив следующим образом:

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

Это создало бы матрицу размером 10×10, заполненную нулями. Чтобы установить значение, вы можете сделать:

 matrix[x][y] = 6
  

до тех пор, пока равно x 0 to rows - 1 и y равно 0 to columns - 1 .

Или считайте значение типа:

 let value = matrix[x][y]
  

Комментарии:

1. Не могли бы вы добавить пример того, как именно словари будут работать так же, как вы делали для 2d-массивов?

2. @LinusG. Почему? Существует бесчисленное множество примеров словарей. И словарь не применяется к матрице.

3. Я просто подумал, что прямое сравнение будет аккуратным 🙂

4. @LinusG. Прямого сравнения нет, поскольку вы не использовали бы словарь для этого. Он имеет совершенно другое применение, не связанное с потребностями операционной системы.