Мой ответ будет таким:
ADT характеризуется набором операций, которые вы можете выполнять над ним, и определением их семантики.ADT reader
можно охарактеризовать операциями
available(reader) -> number
get_next(reader) -> element
Где тип element
не являетсяопределены.Обратите внимание, что не определено, как reader
должен работать внутри или откуда get_next()
извлекает его элементы.Его абстрактный.
Контейнер - это просто (возможно, абстрактный) тип данных, который может содержать экземпляры других типов данных, например вектор.Наш 'reader
явно не должен быть контейнером: в приведенном выше определении ничего не сказано о том, что он будет содержать экземпляры других типов данных.
Вы можете реализовать reader
, который продолжает чтение с клавиатуры и возвращает нажатые клавиши.,Эта реализация явно не контейнер - она не содержит других элементов.Вы также можете реализовать reader
, который является вектором, который также реализует два метода выше.Каждый вызов get_next()
может вернуть свой первый элемент, затем второй и так далее.Эта реализация содержит другие элементы, поэтому она также будет контейнером.