Использование ассоциативного массива — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Ulysses (обсуждение | вклад) м (переименовал «Примеры использования ассоциативного массива» в «Использование ассоциативного массива») |
Ulysses (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | ==Назначение== | ||
+ | АТД Ассоциативный массив Dictionary<K, V> осуществляет отображение из значений типа K в значения типа V. Частным случаем ассоциативного массива является обычный массив элементов типа V: у него в качестве типа K выступают целые числа (тип integer). | ||
+ | |||
+ | ==Пример== | ||
<source lang="pascal"> | <source lang="pascal"> | ||
− | var m := new SortedDictionary<string, integer>; | + | var m := new SortedDictionary<string, integer>; // отображение из строк в целые |
− | m['Крокодил'] := 3; | + | m['Крокодил'] := 3; // указываем значение отображения на элементе 'Крокодил' |
− | m.Add('Бегемот', 2); | + | m.Add('Бегемот', 2); // аналогично предыдущему, просто другой синтаксис. |
{ | { | ||
− | + | В данной точке программы строка: | |
− | + | var n := m['Леопард'] + 1; | |
− | + | вызовет исключение, потому что мы не определяли отображение на элементе 'Леопард'. | |
− | |||
− | |||
− | |||
Чтобы этого не случилось, выполним проверку:} | Чтобы этого не случилось, выполним проверку:} | ||
− | if m.ContainsKey(' | + | if m.ContainsKey('Леопард') then |
− | + | var n := m['Леопард'] + 1; | |
foreach k: KeyValuePair<string, integer> in m do | foreach k: KeyValuePair<string, integer> in m do | ||
− | writeln(k.Key, ' ', k.Value); | + | writeln(k.Key, ' ', k.Value); // печатаем значения отображения на всех определённых ранее элементах |
</source> | </source> | ||
+ | |||
+ | ==Интерфейс== | ||
+ | Стандартные классы, реализующие ассоциативный массив, | ||
+ | * Dictionary<Key, Value>, | ||
+ | * SortedDictionary<Key, Value>, | ||
+ | * SortedList<Key, Value> | ||
+ | имеют следующий интерфейс: | ||
+ | Add(k: Key; v: Value); | ||
+ | Clear; | ||
+ | ContainsKey(k: Key): boolean; | ||
+ | ContainsValue(v: Value): boolean; | ||
+ | Remove(k: Key): boolean; | ||
+ | TryGetValue(k: Key; var v: Value): boolean; | ||
+ | ToString: string; | ||
+ | property Count: integer; | ||
+ | property Item[k: Key]: Value; |
Версия 11:49, 27 апреля 2011
Назначение
АТД Ассоциативный массив Dictionary<K, V> осуществляет отображение из значений типа K в значения типа V. Частным случаем ассоциативного массива является обычный массив элементов типа V: у него в качестве типа K выступают целые числа (тип integer).
Пример
var m := new SortedDictionary<string, integer>; // отображение из строк в целые
m['Крокодил'] := 3; // указываем значение отображения на элементе 'Крокодил'
m.Add('Бегемот', 2); // аналогично предыдущему, просто другой синтаксис.
{
В данной точке программы строка:
var n := m['Леопард'] + 1;
вызовет исключение, потому что мы не определяли отображение на элементе 'Леопард'.
Чтобы этого не случилось, выполним проверку:}
if m.ContainsKey('Леопард') then
var n := m['Леопард'] + 1;
foreach k: KeyValuePair<string, integer> in m do
writeln(k.Key, ' ', k.Value); // печатаем значения отображения на всех определённых ранее элементах
Интерфейс
Стандартные классы, реализующие ассоциативный массив,
- Dictionary<Key, Value>,
- SortedDictionary<Key, Value>,
- SortedList<Key, Value>
имеют следующий интерфейс:
Add(k: Key; v: Value); Clear; ContainsKey(k: Key): boolean; ContainsValue(v: Value): boolean; Remove(k: Key): boolean; TryGetValue(k: Key; var v: Value): boolean; ToString: string; property Count: integer; property Item[k: Key]: Value;