Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ТЕМА КОНТЕЙНЕРЫ / Лаптев Глава 6 Контейнеры

.pdf
Скачиваний:
19
Добавлен:
09.02.2015
Размер:
861.82 Кб
Скачать

Проблема универсальности

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), разработав вложенный класс односвязного списка. Реализовать стек символов в виде двусвязного списка. Использовав этот стек, написать функцию, пр

Соседние файлы в папке ТЕМА КОНТЕЙНЕРЫ