I. Определить класс-шаблон с использованием динамического распределения
памяти согласно варианту и необходимые конструкторы и операции,
включая конструктор копий, операцию присваивания и, если указано,
операцию индексации. При выходе за границу, переполнении и т.п.
вызвать исключительную ситуацию (определить собственные классы)
для информирования программы, вызвавшей метод.
1. класс вектор (одномерный массив элементов заданного типа и фиксированного размера,
указанного в аргументах конструктора)
получение i-го элемента с помощью операции индексации
14. класс вектор (одномерный массив элементов заданного типа и фиксированного размера,
указанного в аргументах конструктора)
получение i-го элемента с помощью операции индексации
2. класс массив (одномерный массив элементов заданного типа),
в аргументах конструктора задаются номер первого и последнего
элемента в массиве как в языке Pascal.
получение i-го элемента с помощью операции индексации
15. класс массив (одномерный массив элементов заданного типа),
в аргументах конструктора задаются номер первого и последнего
элемента в массиве как в языке Pascal.
получение i-го элемента с помощью операции индексации
3. класс матрица (двумерный массив элементов заданного типа,
размеры задаются в аргументах конструктора)
получение (i,j)-го элемента с помощью операции ()
получение строки как матрицы
16. класс матрица (двумерный массив элементов заданного типа,
размеры задаются в аргументах конструктора)
получение (i,j)-го элемента с помощью операции ()
получение столбца как матрицы
4. класс очередь элементов заданного типа, размером не более
указанного в параметрах конструктора,
добавление << и извлечение >> элемента
17. класс очередь элементов заданного типа, размером не более
указанного в параметрах конструктора,
добавление << и извлечение >> элемента
5. класс последовательность элементов заданного типа,
вставка в любое место
последовательности, получение i-го элемента последовательности с помощью операции индексации,
удаление подпоследовательности (с i-го по j-й).
9. класс последовательность элементов заданного типа,
удаление произвольного элемента по номеру, вставка в любое место
последовательности, получение i-го элемента последовательности с помощью операции индексации.
18. класс последовательность элементов заданного типа,
вставка в любое место
последовательности, получение i-го элемента последовательности с помощью операции индексации,
сцепление последовательностей.
22. класс последовательность элементов заданного типа,
вставка в любое место
последовательности, получение i-го элемента последовательности с помощью операции индексации,
получение подпоследовательности (с i-го по j-й).
6. класс упорядоченный набор элементов заданного типа (для
которого заданы операции сравнения)
удаление произвольного элемента по номеру, добавление << нового элемента,
получение i-го элемента последовательности с помощью операции индексации.
10. класс упорядоченный набор элементов заданного типа (для
которого заданы операции сравнения)
добавление << нового элемента,
получение i-го элемента последовательности с помощью операции индексации,
удаление подпоследовательности (с i-го по j-й).
19. класс упорядоченный набор элементов заданного типа (для
которого заданы операции сравнения)
добавление << нового элемента,
получение i-го элемента последовательности с помощью операции индексации,
слияние с помощью операции + двух последовательностей.
23. класс упорядоченный набор элементов заданного типа (для
которого заданы операции сравнения)
добавление << нового элемента,
получение i-го элемента последовательности с помощью операции индексации,
получение подпоследовательности (с i-го по j-й).
7. класс множество элементов заданного типа (для
которого заданы операции сравнения на равенство),
размером не более указанного в параметрах конструктора.
Каждое значение в множестве встречается не более одного раза.
удаление произвольного значения -=, добавление нового значения +=,
проверка принадлежности элемента множеству,
одно множество является подмножеством другого (<=).
11. класс множество элементов заданного типа (для
которого заданы операции сравнения на равенство),
размером не более указанного в параметрах конструктора.
Каждое значение в множестве встречается не более одного раза.
удаление произвольного значения -=, добавление нового значения +=,
проверка принадлежности элемента множеству,
разность (-) множеств.
20. класс множество элементов заданного типа (для
которого заданы операции сравнения на равенство),
размером не более указанного в параметрах конструктора.
Каждое значение в множестве встречается не более одного раза.
удаление произвольного значения -=, добавление нового значения +=,
проверка принадлежности элемента множеству,
объединение (+) множеств.
24. класс множество элементов заданного типа (для
которого заданы операции сравнения на равенство),
размером не более указанного в параметрах конструктора.
Каждое значение в множестве встречается не более одного раза.
удаление произвольного значения -=, добавление нового значения +=,
проверка принадлежности элемента множеству,
пересечение (*) множеств.
8. класс ассоциативный массив, в котором можно осуществлять
поиск значений заданного типа по ключу другого заданного типа,
для которого определена проверка на равенство.
операция доступа по ключу val=obj[key],
добавление, изменение значения, соответствующее ключу.
12. класс ассоциативный массив, в котором можно осуществлять
поиск значений заданного типа по ключу другого заданного типа,
для которого определена проверка на равенство.
операция доступа по ключу val=obj[key],
добавление, удаление значения, соответствующее ключу.
13. класс стек элементов заданного типа, размером не более
указанного в параметрах конструктора,
добавление << и извлечение >> элемента
26. класс стек элементов заданного типа, размером не более
указанного в параметрах конструктора,
добавление << и извлечение >> элемента
21. класс дек для элементов заданного типа, размером не более
указанного в параметрах конструктора,
добавление и извлечение элементов
25. класс дек для элементов заданного типа, размером не более
указанного в параметрах конструктора,
добавление и извлечение элементов
При определении друзей класса-шаблона использовать следующий пример
II. Реализовать main c тестами
(создание объектов и выполнение действий с ними,
в т.ч. действие, приводящее к возникновению исключительной ситуации,
которую необходимо перехватить)
III. Написать отчет
Постановка задачи
Описание интерфейса класса
(class {} и комментарии ко всем полям,
методам и функциям)
Описание тестов для проверки классов
(main с комментариями, какие действия выполнялись, полученные результаты)
Листинг реализации классов
(реализация методов и функций)