
ТЕМА КОНТЕЙНЕРЫ / Лаптев Глава 6 Контейнеры
.pdfПроблема универсальности |
21 |
4.Чем отличается прямой доступ от ассоциативного?
5.Перечислите операции, которые обычно реализуются при последовательном доступе к элементам контейнера.
6.Дайте определение итератора.
7.Можно ли реализовать последовательный доступ без итератора? В чем преимущества реализации последовательного доступа с помощью итератора?
Упражнения |
169 |
8.Что играет роль итератора для массивов С++?
9.Дайте определение вложенного класса.
10.Можно ли класс-итератор реализовать как внешний класс? А как вложенный? В чем различия этих способов реализации?
И. Может ли объемлющий класс иметь неограниченный доступ к элементам вложенного класса? А вложенный класс —
кэлементам объемлющего?
12.Ограничена ли глубина вложенности классов?
13.Можно ли определить вложенный класс внешним образом? Зачем это может понадобиться?
14.Каким образом вложенный класс может использовать методы объемлющего класса? А объемлющий — методы вложенного?
15.Что такое «запредельный» элемент, какую роль он играет в контейнерах?
16.Дайте определение стека, очереди и дека.
17.Объясните назначение методов begi п () и end ().
18.Обязательно ли при реализации контейнеров программировать операцию присваивания? А конструктор копирования?
19.Приведите минимальный интерфейс, который необходимо реализовать при разработке класса-стека.
20.Объясните, по каким причинам трудно написать универсальный контейнер, элементы которого могут иметь произвольный тип.
Упражнения
Во всех заданиях обязательно должны быть реализованы инициализирующий конструктор, конструктор копирования, деструктор, ввод-вывод. Подходящие операции реализуются как методы класса, а остальные — как внешние дружественные функции.
1.Модифицировать класс TDeque (см. листинги 6.1-6.3), добавив операцию простого сцепления. Перегрузить для этого операцию operator+.
2.Добавить в класс TDeque операции сортировки и слияния сортированных списков.
3.Реализовать итератор класса TDeque как внешний класс.
4.Использовав в качестве основы класс TDeque, реализовать операции объединения и пересечения множеств. Если потребуется, реализовать дополнительные методы.
5.Для изучения иностранного языка имеются специальные карточки, каждая из которых представляет собой структуру WordCard, содержащую иностранное слово и его перевод. Использовав в качестве образца класс TDeque, реализовать класс словаря иностранных слов Dictionary, который содержит список карточек иностранных слов. Карточки добавляются в словарь и удаляются из !
него. В словаре не должно быть дублирования. Реализовать поиск слова как отдельный метод. Реализовать операцию объединения словарей. При объединении новый словарь должен содержать без повторений все слова, содержащиеся в обоих словарях-операндах. Реализовать операцию ассоциативного доступа; ключом является иностранное слово.
6.Реализовать очередь нуждающихся в улучшении жилищных, условий. Элементом очереди является структура с полями фамилии, количества членов семьи и даты постановки в очередь. Для реализации поля даты использовать упрощенную версию класса Date (см. упражнение 4 в главе 2). Реализовать операцию поиска элемента по фамилии. Реализовать операцию объединения двух очередей (если очередник есть в обеих — включать только один раз).
7.Реализовать стек символов в виде односвязного списка. Использовав этот стек, написать функцию реверсирования массива символов.
8.Реализовать класс Li stPerson (см. упражнение 10 в главе 4) с использованием списка, аналогичного TDeque.
9.Реализовать класс Money (см. упражнение 4 в главе 4), использовав список в качестве динамического контейнера.
10.Реализовать класс Poli п о т (см. упражнение 5 в главе 4), разработав вложенный класс односвязного списка. Реализовать стек символов в виде двусвязного списка. Использовав этот стек, написать функцию, пр