Использование ассоциативного массива — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Пример)
(Пример)
 
Строка 5: Строка 5:
 
<source lang="pascal">
 
<source lang="pascal">
 
uses System.Collections.Generic; // стандартный модуль
 
uses System.Collections.Generic; // стандартный модуль
 +
 +
// …
  
 
   var m := new Dictionary<string, integer>; // отображение из строк в целые
 
   var m := new Dictionary<string, integer>; // отображение из строк в целые

Текущая версия на 14:02, 2 мая 2011

Назначение

АТД Ассоциативный массив Dictionary<K, V> осуществляет отображение из значений типа K в значения типа V. Частным случаем ассоциативного массива является обычный массив элементов типа V: у него в качестве типа K выступают целые числа (тип integer).

Пример

uses System.Collections.Generic; // стандартный модуль

// …

  var m := new Dictionary<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;