

680_____________________________________________Глава 12

По умолчанию перечислимые значения, указанные в объявлении enum, ин-
терпретируются как целые числа, причем первое значение эквивалентно 0, второе
— 1 и т.д. Именно эти значения рассматриваются в операциях отношения >, < и [
др. Значения по умолчанию можно изменить, если после имени константы указать
знак равенства (=) и задать присваиваемое целое значение, как положительное,
так и отрицательное. Например:

enum (mRead = -1, mEdit, mWrite = 2) Mode;

Если после каких-то констант не задано их целое значение, оно считается на 1
больше предыдущего. Поэтому в приведенном примере mRead эквивалентно -1,
mEdit эквивалентно 0, mWrite эквивалентно 2.

После ключевого слова enum может следовать тэг — имя объявляемого типа.
Например:

enum regim {mRead = -1, mEdit, mWrite = 2} Mode, Model;

Этот оператор объявляет две переменные Mode и Model перечислимого типа,
и кроме того определяет тип regim. В дальнейшем вы можете воспользоваться име-
нем regim для объявления каких-то новых переменных, например:

regim Mode3;

12.6 Множества

Множество — это группа элементов, которая ассоциируется с ее именем и с ко-
торой можно сравнивать другие величины, чтобы определить, принадлежат ли они
этому множеству. Как частный случай, множество может быть пустым.

Множество реализовано в C++Builder как шаблон класса, определенный в г
ловном файле vcl/sysdefs.h.

Объявляется множество оператором:

Set <type, minval, maxval> переменные;

Параметр type определяет тип элементов множества. Обычно это порядковые
типы int, char или перечислимый. Параметры minval и maxval типа unsigned
char определяют минимальное и максимальное значения элементов множества.
Минимальное значение должно быть не меньше 0, максимальное — не более 255.

Приведем примеры объявления множеств.

Объявление переменной si как множества всех заглавных латинских букв
имеет вид:

Set <char, 'A', 'Z'> si;

Следующий оператор объявляет множество СЬ, содержащее все символы:

Set <char, 0, 255> Ch;

Следующие операторы объявляют тип UPPERCASESet множества всех ^
главных латинских букв и объявляют переменные s2 и s3 этого типа:

typedef Set <char, 'A','Z'> UPPERCASESet;

UPPERCASESet si, s2;

Следующие операторы определяют множество S, элементами которого явля-
ются данные перечислимого типа Е: red, yellow, green:

enum E { white, red, yellow, green };

Set <E, red, green> S;

Объявление переменной типа множества Set не инициализирует ее какими-то
значениями. Инициализацию можно делать с помощью описанной ниже операции
« — добавление элемента в множество.