Як описати безліч

Одним з типів структур даних, що є безпосереднім втіленням математичних сутностей в інформатиці, є множини. Операції з ними досить часто лежать в основі різних алгоритмів. Для опису множин в різних мовах програмування існують свої кошти.
Як описати безліч
Вам знадобиться
  • - середовище розробки;
  • - транслятор з вибраної мови програмування.
Інструкція
1
Опишіть безліч за допомогою засобів мови програмування, якщо вони у нього є. Наприклад, у мові Pascal існує конструкція set, що дозволяє декларувати відповідні типи. Правда, обсяг таких множин не повинен перевищувати 256 елементів. Приклад оголошень типів множин може виглядати так:

type
AZLetters = set of 'A' .. 'Z';
AllLetters = set of char-

Декларація змінних та констант типів, які є множинами, проводиться звичайним чином. При цьому для ініціалізації можуть бути використані літерали множин. Наприклад:



const
LettersSet1: AZLetters = ['A', 'B', 'C'] -

2
Використовуйте можливості стандартних бібліотек або модулів для опису множин. Так, бібліотека шаблонів C ++, яка повинна поставлятися разом з компілятором, включає шаблон класу контейнера set, що реалізує функціонал множин:

template <
class Key,
class Traits = less,
class Allocator = allocator
>
class set

Як видно з лістингу, аргументами шаблону set є: тип даних елементів множини, тип функціонального об'єкта для визначення порядку проходження елементів в наборі і тип об'єкта-розподільника пам'яті. При цьому тільки перший аргумент обов'язковий (в якості двох інших за замовчуванням використовується стандартний бінарний предикат less і стандартний розподільник).

3
Застосуйте класи або шаблони класів використовуваних при розробці фреймворків, які реалізують функціонал роботи з множинами, якщо такі є. Як приклад подібного засобу може виступати шаблонний клас QSet модуля QtCore бібліотеки Qt. Його можливості аналогічні тим, які має контейнер set з STL, описаний в попередньому кроці.
4
Опишіть безліч за допомогою засобів власної реалізації. Використовуйте бітові прапори, що зберігаються в масивах даних фіксованої довжини, для множин елементів простих типів і невеликого об'єму. Реалізуйте клас контейнера множин для складних типів даних. За основу можна взяти функціонал асоціативних або хешірующіх асоціативних масивів. Його ж, у свою чергу, можна побудувати на базі самобалансірующіхся бінарних дерев пошуку (наприклад, червоно-чорних дерев).

Увага, тільки СЬОГОДНІ!