#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. Прямого сравнения нет, поскольку вы не использовали бы словарь для этого. Он имеет совершенно другое применение, не связанное с потребностями операционной системы.