Map2 - enhanced map class

Map2 enhance the functionality of the built-in containers.Map class.
325 Downloads
Updated 14 Feb 2013

View License

The Map2 object is a subclass of the built-in containers.Map class.
It is a data structure which contains of key-value pairs. Map2 enhance
the functionality of the built-in containers.Map class. It provides
a few extra methods and allows you to use indexing in order to get
specific values from the container. Also a bidirectional use of
key-value pairs is supported (like Boost.Bimap library).

Map2 object can be indexed by using curly brackets {range1,range2}.
It returns a cell array of values or scalar value of Map2 given range
(range1,range2). range1 refers to position of the value set and
range2 refers to position inside a value set. range2 can be omitted
if not needed.

Look at the built-in containers.Map class documentation for more
info about how to properly construct a Map2 object and what
properties/methods it includes.

Examples:
myMap = Map2({'West Germany','Argentina','Italy','England'},...
{1,2,3,4});
fprintf(1,'The number of coutries is %d\n',myMap.length);
fprintf(1,'The winner is %s\n',myMap.right_at(myMap.right_find(1)))
fprintf(1,'Countries names ordered by their final position:\n')
for k = 1:myMap.length
fprintf(1,'%s)\t%s\n',num2str(myMap{myMap.right_find(k)}),myMap.right_at(myMap.right_find(k)))
end
fprintf(1,['Countries names ordered alphabetically along',...
' with their final position:\n']);
for k = 1:myMap.length
fprintf(1,'%s ends in position %s\n',myMap.right_at(k),num2str(myMap{k}))
end

myMap = Map2({'Frequency','Impedance','Phase'},...
{[1 10 1e2 1e3 1e4 1e5],[1 2 4 8 16 32],[90 90 89 85 60 20]});
myMap = myMap.addSets({'Resistance','Inductance'},{[0.2 0.3 0.5 0.7 1.2 1.75],...
[1.1e-4 1.05e-4 0.9e-4 0.7e-4 0.4e-4 0.1e-4]});
figure(1)
plot(cell2mat(myMap{myMap.find('Frequency'),1:numel(myMap('Frequency'))-2}),...
cell2mat(myMap{3,1:4}),'linew',2);
xlabel(myMap.right_at(1));
ylabel(myMap.right_at(3));
figure(2)
dataSets = myMap{[4,3]};
plot(cell2mat(dataSets(:,1)),cell2mat(dataSets(:,2)),'linew',2);
xlabel(myMap.right_at(4));
ylabel(myMap.right_at(3));


% Calculate the number of all values in the container.
sum(cell2mat(cellfun(@(x) numel(x),myMap{1:myMap.length},'uni',false)))

% Get one element from value set
elem = myMap{2,5}
elem = myMap.right_at(2,3)

Map2 public properties:
Inherited from containers.Map class:
KeyType - Type of key used by this instance of Map.
ValueType - Type of value used by this instance of Map.
Count - Number of key-value pairs in Map.


Map2 public methods:
clear - Removes all the key-values pairs from the data
structure.
find - Return an index of the given key argument. If the key
is not found then index will empty.
addSets - Return a new Map2 object which size has been
increased by the given key-value pairs.
right_find - Return an index of the given key argument. Index look up is done
switching key-value pairs (Map(X,Y) => Map(Y,X)). If the key
is not found then index will empty.
right_at - Return an array of values(cell or scalar) of Map2 given range
(range1,range2). Key-value pairs have been switched (Map(X,Y) => Map(Y,X))
Where range1 refers to position of the value set and range2
refers to position inside a value set. range2 can be omitted
if not needed.

Inherited from containers.Map class:
isKey - Determine whether Map2 contains given key.
keys - Return cell array of keys of Map2.
values - Return cell array of values of Map2.
remove - Remove key-value pairs from Map2.
size - Return size of Map2.
length - Return length of Map2. This is the number of
key-value pairs in Map2.
isempty - Determine if Map2 contains any data.

Cite As

Mikko Leppänen (2024). Map2 - enhanced map class (https://www.mathworks.com/matlabcentral/fileexchange/40323-map2-enhanced-map-class), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2012b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Categories
Find more on Dictionaries in Help Center and MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.0.0.0