Вам понадобится
- - среда разработки;
- - транслятор с выбранного языка программирования.
Инструкция
1
Опишите множество при помощи средств языка программирования, если они у него имеются. Например, в языке Pascal существует конструкция set, позволяющая декларировать соответствующие типы. Правда, объем таких множеств не должен превышать 256 элементов. Пример объявлений типов множеств может выглядеть так:
type
AZLetters = set of 'A'..'Z';
AllLetters = set of char;
Декларация переменных и констант типов, являющихся множествами, производится обычным образом. При этом для инициализации могут быть использованы литералы множеств. Например:
const
LettersSet1: AZLetters = ['A', 'B', 'C' ];
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 и стандартный распределитель).
template <
class Key,
class Traits=less,
class Allocator=allocator
>
class set
Как видно из листинга, аргументами шаблона set являются: тип данных элементов множества, тип функционального объекта для определения порядка следования элементов в наборе и тип объекта-распределителя памяти. При этом только первый аргумент обязателен (в качестве двух других по умолчанию используется стандартный бинарный предикат less и стандартный распределитель).
3
Примените классы или шаблоны классов используемых при разработке фреймворков, которые реализуют функционал работы с множествами, если такие имеются. В качестве примера подобного средства может выступать шаблонный класс QSet модуля QtCore библиотеки Qt. Его возможности аналогичны тем, которые имеет контейнер set из STL, описанный в предыдущем шаге.
4
Опишите множество при помощи средств собственной реализации. Используйте битовые флаги, хранящиеся в массивах данных фиксированной длины, для множеств элементов простых типов и небольшого объема. Реализуйте класс контейнера множеств для сложных типов данных. За основу можно взять функционал ассоциативных или хеширующих ассоциативных массивов. Его же, в свою очередь, можно построить на базе самобалансирующихся бинарных деревьев поиска (например, красно-черных деревьев).