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

Одним з типів структур даних, що є безпосереднім втіленням математичних сутностей в інформатиці, є множини. Операції з ними досить часто лежать в основі різних алгоритмів. Для опису множин в різних мовах програмування існують свої кошти.
Вам знадобиться
  • - середа розробки;
  • - транслятор з вибраної мови програмування.
Інструкція
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 setКак видно з лістингу, аргументами шаблону set є: тип даних елементів безлічі, тип функціонального об'єкта для визначення порядку проходження елементів в наборі і тип об'єкта-розподільника пам'яті. При цьому тільки перший аргумент обов'язковий (в якості двох інших за замовчуванням використовується стандартний бінарний предикат less і стандартний розподільник).
3
Застосуйте класи або шаблони класів використовуваних при розробці фреймворків, які реалізують функціонал роботи з множинами, якщо такі є. Як приклад подібного засобу може виступати шаблонний клас QSet модуля QtCore бібліотеки Qt. Його можливості аналогічні тим, які має контейнер set з STL, описаний в попередньому кроці.
4
Опишіть безліч за допомогою засобів власної реалізації. Використовуйте бітові прапори, що зберігаються в масивах даних фіксованої довжини, для множин елементів простих типів і невеликого обсягу. Реалізуйте клас контейнера множин для складних типів даних. За основу можна взяти функціонал асоціативних або хешірующіх асоціативних масивів. Його ж, в свою чергу, можна побудувати на базі самобалансірующіхся бінарних дерев пошуку (наприклад, червоно-чорних дерев).