Множество и словарь. Реализация на деревьях поиска: различия между версиями

Материал из Олимпиадное программирование в УлГТУ
Перейти к навигации Перейти к поиску
(Новая страница: «== Общие сведения == Иногда решение задачи требует применения [[АТД «Множество». Реализаци…»)
 
Нет описания правки
Строка 1: Строка 1:
<span style="color: red;">'''Редактирование данной статьи ещё не завершено.'''</span>
== Общие сведения ==
== Общие сведения ==
Иногда решение задачи требует применения [[АТД «Множество». Реализация на битовых векторах|абстрактного типа данных &laquo;Множество&raquo;]], однако отсутствует возможность отмечать каждое допустимое значение отдельной логической переменной (если множество имеет большую мощность или бесконечно, как, например, множество строк или вещественных чисел).
Иногда решение задачи требует применения [[АТД «Множество». Реализация на битовых векторах|абстрактного типа данных &laquo;Множество&raquo;]], однако отсутствует возможность отмечать каждое допустимое значение отдельной логической переменной (если множество имеет большую мощность или бесконечно, как, например, множество строк или вещественных чисел).

Версия от 11:11, 27 февраля 2013

Редактирование данной статьи ещё не завершено.

Общие сведения

Иногда решение задачи требует применения абстрактного типа данных «Множество», однако отсутствует возможность отмечать каждое допустимое значение отдельной логической переменной (если множество имеет большую мощность или бесконечно, как, например, множество строк или вещественных чисел).

Словарь (англ. dictionary, map) — абстрактный тип данных, позволяющий хранить набор значений, обращение к которым происходит по ключам. Ключи должны допускать сравнение друг с другом. Примеры словарей достаточно разнообразны:

  • Обычный толковый словарь хранит определения слов (являющиеся значениями), сопоставленные с самими словами (являющимися ключами);
  • Банковская база данных может хранить данные клиентов, сопоставленные с номерами счетов;
  • Экзаменационная ведомость содержит оценки, сопоставленные с фамилиями студентов, и т. д.

Множество можно рассматривать как словарь, в котором ключ элемента совпадает с его значением. Массив можно рассматривать как словарь, в котором ключи являются целыми числами. С другой стороны, словарь можно рассматривать как массив, тип индексов которого может не быть целочисленным. Например, содержимое телефонного справочника можно рассматривать как массив телефонных номеров, индексами в котором являются фамилии абонентов. Отсюда другое название словаря — ассоциативный массив (англ. assotiative array).

Как и для случая множеств, возможна такая реализация словаря, в которой каждому ключу могут быть сопоставлены несколько значений (тогда для обозначения применяется термин multimap).

Интерфейс

Стандартный интерфейс множества был рассмотрен в статье «Множество (реализация на битовых векторах)». Операции словаря похожи на операции множества, но в качестве параметров принимают ключи, а не непосредственные значения элементов.

void insert(T1 key, T2 value) — добавление пары (key, value) в словарь;
void remove(T1 key) — исключение из словаря значения, сопоставленного с ключом key;
T2 find(T1 key) — получение значения, сопоставленного с ключом key.