Шрифт:
Директива
27.9. Пример: интрузивные контейнеры
Контейнеры из стандартной библиотеки языка С++, такие как
Определим двухсвязный список с девятью операциями.
Мы хотим определить эти операции так, чтобы их пользователям было достаточно использовать только указатели
Приведем графическое представление контейнера
В наши намерения на входит демонстрация изощренных методов или алгоритмов, поэтому ни один из них на рисунке не показан. Тем не менее обратите внимание на то, что мы не упоминаем о данных, которые хранятся в узлах (элементах списков). Оглядываясь на функции-члены этой структуры, мы видим, что сделали нечто подобное, определяя пару абстрактных классов
Для реализации функций структуры
В языке C нет пространств имен, поэтому можно не беспокоиться о декларациях или директивах
Инициализация тривиальна, но обратите внимание на использование функции
Мы решили не связываться с обработкой ошибок, связанных с некорректными указателями на списки, во время выполнения программы. Используя макрос