Довольно часто в структуре Map хранятся другие классы, такие как структуры или массивы ячеек. Однако карты наиболее эффективны в том случае, если хранящиеся в них данные относятся к одному из основных типов MATLAB ®, таких как двойные, символьные, целые и логические.
В следующем примере номера мест авиакомпании сопоставляются со структурами, содержащими номера билетов и пункты назначения. Начните с карты ticketMap, который сопоставляет номера билетов пассажирам:
ticketMap = containers.Map(...
{'2R175', 'B7398', 'A479GY', 'NZ1452'}, ...
{'James Enright', 'Carl Haynes', 'Sarah Latham', ...
'Bradley Reid'});
Затем создайте следующий массив структуры, содержащий номера билетов и адреса назначения:
s1.ticketNum = '2S185'; s1.destination = 'Barbados'; s1.reserved = '06-May-2008'; s1.origin = 'La Guardia'; s2.ticketNum = '947F4'; s2.destination = 'St. John'; s2.reserved = '14-Apr-2008'; s2.origin = 'Oakland'; s3.ticketNum = 'A479GY'; s3.destination = 'St. Lucia'; s3.reserved = '28-Mar-2008'; s3.origin = 'JFK'; s4.ticketNum = 'B7398'; s4.destination = 'Granada'; s4.reserved = '30-Apr-2008'; s4.origin = 'JFK'; s5.ticketNum = 'NZ1452'; s5.destination = 'Aruba'; s5.reserved = '01-May-2008'; s5.origin = 'Denver';
Сопоставьте пять мест с этими конструкциями:
seatingMap = containers.Map( ...
{'23F', '15C', '15B', '09C', '12D'}, ...
{s5, s1, s3, s4, s2});
С помощью этого объекта Map найдите информацию о пассажире, имеющем 09C плацкарты:
seatingMap('09C')
ans =
ticketNum: 'B7398'
destination: 'Granada'
reserved: '30-Apr-2008'
origin: 'JFK'Используя ticketMap и seatingMap вместе вы можете найти имя человека, который имеет плацкартные 15B:
ticket = seatingMap('15B').ticketNum;
passenger = ticketMap(ticket)
passenger =
Sarah LathamКак и в случае структур, можно также сопоставить массив ячеек в объекте Map. Продолжая пример авиакомпании из предыдущих разделов, некоторые пассажиры рейса имеют счета «часто летающих пассажиров» в авиакомпании. Сопоставьте имена этих пассажиров с записями о количестве миль, которые они использовали, и количестве миль, которые они все еще имеют:
accountMap = containers.Map( ...
{'Susan Spera','Carl Haynes','Anna Latham'}, ...
{{247.5, 56.1}, {0, 1342.9}, {24.6, 314.7}});
Для получения сведений о пассажирах используйте карту:
name = 'Carl Haynes';
acct = accountMap(name);
fprintf('%s has used %.1f miles on his/her account,\n', ...
name, acct{1})
fprintf(' and has %.1f miles remaining.\n', acct{2})
Carl Haynes has used 0.0 miles on his/her account,
and has 1342.9 miles remaining.
cell | containers.Map | isKey | keys | struct | values