#ifndef MY_LIB_H
#define MY_LIB_H
// Структура подмножества символов латинского алфавита
struct My_set
{
bool* M; // Двоичный массив наличия элементов
int N; // Размер универсума (26)
char a; // Первый символ универсума ('a')
// Конструкторы и управление памятью
My_set(); // Конструктор по умолчанию (пустое множество)
My_set(const My_set& other); // Конструктор копирования
~My_set(); // Деструктор для очистки памяти
My_set& operator=(const My_set& other); // Оператор присваивания
// Методы работы с элементами множества
void insert(char value); // Добавление элемента
void remove(char value); // Удаление элемента
void print(); // Вывод множества на экран
int size(); // Вычисление мощности (количества элементов)
bool find(char value); // Поиск элемента во множестве
};
// Функции отношений между двумя множествами
bool equal(My_set A, My_set B); // Проверка равенства множеств A и B
bool subset(My_set A, My_set B); // Проверка включения (является ли A подмножеством B)
// Функции операций над множествами
My_set unification(My_set A, My_set B); // Объединение (A v B)
My_set intersection(My_set A, My_set B); // Пересечение (A & B)
My_set difference(My_set A, My_set B); // Разность (A \ B)
My_set addition(My_set A); // Дополнение до универсума (НЕ A)
My_set symmetric_difference(My_set A, My_set B); // Симметрическая разность (кольцевая сумма)
#endif