containers.Map

Объект, привязывающий значения к уникальным ключам

Описание

Map объект является структурой данных, которая позволяет вам получать значения с помощью соответствующего ключа. Ключи могут быть вещественными числами или векторами символов. В результате они обеспечивают больше гибкости для доступа к данным, чем индексы массива, которые должны быть положительными целыми числами. Значения могут быть скалярными или нескалярными массивами.

Создание

Описание

пример

M = containers.Map(keySet,valueSet) создает Map объект, который содержит ключи от keySet, каждый сопоставленный с соответствующим значением от valueSet. Входные параметры keySet и valueSet должен иметь то же число элементов, с keySet наличие элементов, которые уникальны.

пример

M = containers.Map(keySet,valueSet,'UniformValues',isUniform), где isUniform false, указывает что значения в valueSet не должны быть универсальными. Значение по умолчанию isUniform true. Значения в valueSet универсальны, когда они - все скаляры, которые имеют совпадающий тип данных, или когда они - все векторы символов.

пример

M = containers.Map('KeyType',kType,'ValueType',vType) создает пустой Map возразите и задает типы данных ключей и значений, которые можно добавить в него позже. Можно переключить порядок 'KeyType' и 'ValueType' аргументы пары "имя-значение", но обе пары "имя-значение" требуются.

M = containers.Map создает пустой Map объект.

Входные параметры

развернуть все

Ключи, заданные как числовой массив, массив ячеек из символьных векторов или массив строк.

Если вы задаете ключи с помощью массива строк, то containers.Map функция преобразует ключи и хранит их как векторы символов. Из-за этого преобразования, KeyType свойство выхода Map объект установлен в 'char'.

Значения, заданные как массив.

Индикатор универсальных значений в valueSet, заданный как true(1 ) или false(0) .

Тип данных ключей, которые будут добавлены к пустому Map объект, заданный как вектор символов. Можно задать kType как любой из типов данных в таблице, так, чтобы ключи были или векторами символов или числовыми скалярами.

kType

Тип данных и размер ключа

'char' (значение по умолчанию)

Символьный вектор

'double'

Двойной скаляр

'single'

Один скаляр

'int32'

32-битный скаляр целого числа со знаком

'uint32'

32-битный скаляр беззнаковых целых чисел

'int64'

64-битный скаляр целого числа со знаком

'uint64'

64-битный скаляр беззнаковых целых чисел

Тип данных значений, которые будут добавлены к пустому Map объект, заданный как вектор символов. Можно задать vType как любой из типов данных в таблице.

vType

Тип данных и размер значения

'any' (значение по умолчанию)

Массив, который имеет любой тип данных

'char'

Символьный вектор

'logical'

Логический скаляр

'double'

Двойной скаляр

'single'

Один скаляр

'int8'

8-битный скаляр целого числа со знаком

'uint8'

8-битный скаляр беззнаковых целых чисел

'int16'

16-битный скаляр целого числа со знаком

'uint16'

16-битный скаляр беззнаковых целых чисел

'int32'

32-битный скаляр целого числа со знаком

'uint32'

32-битный скаляр беззнаковых целых чисел

'int64'

64-битный скаляр целого числа со знаком

'uint64'

64-битный скаляр беззнаковых целых чисел

Свойства

развернуть все

Это свойство доступно только для чтения.

Количество пар "ключ-значение" в Map объект, заданный в виде числа.

Это свойство доступно только для чтения.

Тип данных ключей, заданных как вектор символов.

Это свойство доступно только для чтения.

Тип данных значений, заданных как вектор символов.

Функции объекта

isKeyОпределите, содержит ли объект Map ключ
keysВозврат ключей объекта Map
lengthКоличество пар "ключ-значение" в объекте Map
removeУдалите пары "ключ-значение" из объекта Map
sizeРазмер объекта Map
valuesВозврат значений объекта Map

Примеры

свернуть все

Создайте Map объект, который содержит данные о ливне в течение нескольких месяцев. Карта содержит эти четыре значения в valueSet, и ключи являются четырехмесячными именами в keySet.

keySet = {'Jan','Feb','Mar','Apr'};
valueSet = [327.2 368.2 197.6 178.4];
M = containers.Map(keySet,valueSet)
M = 
  Map with properties:

        Count: 4
      KeyType: char
    ValueType: double

Отобразите ливень на март. Можно получить значение на март при помощи 'Mar' как ключ.

M('Mar')
ans = 197.6000

Отобразите количество значений в карте. Можно получить доступ к Count свойство с помощью записи через точку.

M.Count
ans = uint64
    4

Создайте Map объект с идентификационными номерами как ключи и сотрудник называет как значения.

ids = [437 1089 2362];
names = {'Lee, N.','Jones, R.','Sanchez, C.'};
M = containers.Map(ids,names)
M = 
  Map with properties:

        Count: 3
      KeyType: double
    ValueType: char

Получите имя с помощью идентификационного номера в качестве ключа.

M(437)
ans = 
'Lee, N.'

Создайте Map объект, который содержит результаты испытаний для пациентов. Для любого пациента результаты могут быть или в числовом массиве или в файле. Можно сохранить числовые массивы и имена файлов как значения в той же карте. Чтобы сохранить значения, которые не имеют совпадающего типа данных в той же карте, задайте 'UniformValues',false.

keySet = {'Li','Jones','Sanchez'};
testLi = [5.8 7.35];
testJones = [27 3.92 6.4 8.21];
testSanchez = 'C:\Tests\Sanchez.dat';

valueSet = {testLi,testJones,testSanchez};
M = containers.Map(keySet,valueSet,'UniformValues',false)
M = 
  Map with properties:

        Count: 3
      KeyType: char
    ValueType: any

Отобразите числовой массив, сопоставленный с Ли.

M('Li')
ans = 1×2

    5.8000    7.3500

Отобразите имя файла, сопоставленное с Санчесом. Если файл содержит числовые значения, вы могли бы затем вызвать функцию, чтобы считать те значения в массив.

M('Sanchez')
ans = 
'C:\Tests\Sanchez.dat'

Создайте пустой Map объект. Задайте типы данных для пар "ключ-значение", добавленных позже.

M = containers.Map('KeyType','char','ValueType','double')
M = 

  Map with properties:

        Count: 0
      KeyType: char
    ValueType: double

Добавьте пары "ключ-значение" в карту.

M('Jan') = 327.2;
M('Feb') = 368.2;
M
M = 
  Map with properties:

        Count: 2
      KeyType: char
    ValueType: double

Отобразите ключи и значения, которые теперь содержит карта.

keys(M)
ans = 1x2 cell array
    {'Feb'}    {'Jan'}

values(M)
ans=1×2 cell
    {[368.2000]}    {[327.2000]}

Представленный в R2008b