Бързо прилагане на речник Habr

речник

речник

Речникът Swift е контейнер, който съхранява множество стойности от един и същи тип. Всяка стойност е свързана с уникален ключ, който действа като идентификатор за тази стойност в речника. За разлика от елементите в масив, елементите в речника не са в определен ред. Използвайте речник, когато трябва да търсите стойности въз основа на техния идентификатор, точно както в реалния свят речникът се използва за намиране на дефиницията на определена дума. (приблизително)

Помислете за пример на речник, проектиран за 8 елемента: той осигурява максимум 7 записа (ключове, стойности) и поне едно празно пространство (така нареченото пространство) в буфера на речника, поради което се получава един вид блокиране на търсенето чрез селекции/вмъквания (извличания/вмъквания). В памет ще изглежда по следния начин:

Постоянната памет се настройва чрез:

размер = капацитет * (размер на (растерна карта) + размер на (ключове) + размер на (стойности))

Ако организираме данните логично, получаваме нещо като:

habr

Всяка колона формира сегмент от паметта, в който са фиксирани три параметъра: растерна стойност, ключ и стойност.

Растерната стойност в сегмента показва дали ключът и съответната стойност са валидни и дефинирани. Ако данните са невалидни/неинициализирани, сегментът се нарича интервал.

_HashedContainerStorageHeader (структура)

прилагане

Тази структура действа като заглавка за бъдещия буфер на паметта. Той съдържа капацитета и информация за обема, където капацитетът е действителният капацитет на разпределената памет, а информацията за обема е броят на валидните елементи в буфера в момента.

maxLoadFactorInverse е фактор, който ви позволява да разширите буфера, ако е необходимо.

_NativeDictionaryStorageImpl (клас)

Основната задача на този клас е да разпредели оптимална за речника памет и да създаде указатели към растерни изображения, ключове и стойности, които по-късно ще трябва да бъдат обработени. Например: