Перейти к основному содержимому

Наследование. Множества

Алиас: Множество.

Задание

Разработать шаблонный класс множество (MySet) на базе шаблонного класса вектор (MyVector) для выполнения операций над множествами (+, -, *, +=, -=, *=, ==) и функцию main() для его тестирования.

Класс MySet и MyVector должны быть упакованы в отдельную статическую библиотеку. Пример того, как это может быть сделано, представлен в Приложении 1.

Необходимо реализовать специализацию шаблонов для работы со скалярными типами (char*, double, int и др.). Это необходимо сделать в виде специализации конкретных методов шаблонов, которые зависят от параметров шаблона. Иными словами, вместо реализации специализации шаблона полностью, необходимо специализировать конкретные методы шаблона, функционирование которых зависит от типов аргументов (например, деструкторы, сортировка и т.д.).

к сведению

Перед реализацией специализаций шаблонов, настоятельно рекомендуется изучить статью о специализации шаблона и перегрузок операторов и статью о линковке шаблонного класса и его специализации.

Класс вектор должен быть динамическим массивом, размер которого может автоматически изменяться (увеличиваться или уменьшаться) в процессе выполнения программы. Добавление элементов производится в конец вектора.

Для ускорения выполнения операций над множествами вектор, используемый классом множество, должен быть отсортирован (сортировку достаточно делать только при добавлении элемента в множество). Для поиска элементов множества следует использовать метод половинного деления.

Методы add_element() и delete_element() производного класса MySet переопределяют одноименные методы базового класса MyVector, а остальные элементы класса MyVector наследуются классом MySet.

При выполнении лабораторной работы использовать файлы с описанием классов MyVector, MySet и функцию main() главного проекта, приведенные в Приложении 1.

Режимы выполнения программы

В данной лабораторной работе разделение на демонстрационный и интерактивный режим не требуется. Функцию main() необходимо реализовать так, как это показано в заготовке программы из Приложения 1. При необходимости при очной демонстрации необходимо будет менять данные в коде программы и пересобирать программу для показа.

Методический материал

  1. Указания по выполнению работы
  2. Контрольные вопросы