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Клавиши Return 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
    {'Feb'}    {'Jan'}

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

Расширенные возможности

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