2017-01-12 5 views
-3

Как инициализировать массив контейнеров в Matlab? Предусмотрена ли какая-либо структура для этого?Как инициализировать массив контейнеров в Matlab?

Мне нужно что-то вроде refMap (1) до refMap (n). Каждый из них - уникальный словарь.

Я намерен использовать его для перевода глобальной ссылки на локальную ссылку. Я работаю с каким-то параллельным программным кодом. Поэтому я не могу просто разместить всю свою информацию на одной карте. У меня получится структура настолько медленная, насколько это возможно.

+2

No. Зачем вам нужен массив 'объектов container.Map'? Почему бы просто не поместить все в «container.Map», поскольку это ... контейнер. – Suever

+0

Это было бы невозможно. Я намерен использовать его для перевода глобальной ссылки на локальную ссылку. Я работаю с каким-то параллельным программным кодом. У меня получится структура настолько медленная, насколько это возможно. –

+0

Мне нужно иметь несколько карт, к которым нужно получить доступ, например карту {3} map (4) или аналогичным образом –

ответ

1

Я бы рекомендовал просто хранить их в массив ячеек, а затем вы можете написать небольшую анонимную функцию, чтобы создать все из них

create_containers = @(n)arrayfun(@(x)containers.Map(), 1:n, 'UniformOutput', false); 

И затем использовать его для создания N containers.Map` объектов

containers = create_containers(4); 
1

Я не уверен, можете ли вы использовать массив. Я бы поместил различные карты контейнеров в ячейки.

mapObj_1 = containers.Map(Set_11, Set_12); 
cellObjs = {mapObj_1, mapObj_2, ...} 
0

Я нашел косвенный способ сделать это. Я могу определить класс, который карта контейнера является его свойством. Поэтому вместо инициализации массива контейнеров я просто инициализирую массив объектов с контейнерами внутри него.

Это устанавливает класс dict, который имеет внутри него карту контейнера.

classdef dict  
    properties 
     trans = containers.Map   
    end 
    methods 
    end   
end 

Эта инициализация 4 объектов

for ii = 1:4 
    op(ii) = dict(); 
end 

Теперь вы можете использовать их, просто вызывая ор (б) .trans