В чем разница между ADT (абстрактный тип данных) и контейнером? - PullRequest
0 голосов
/ 20 мая 2018

Может кто-нибудь объяснить разницу между «абстрактным типом данных» и «контейнером»?Я должен использовать их как часть проекта для своего класса Data Structures and Algorithms, но я не понимаю разницы.

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Мой ответ будет таким:

ADT характеризуется набором операций, которые вы можете выполнять над ним, и определением их семантики.ADT reader можно охарактеризовать операциями

  • available(reader) -> number
  • get_next(reader) -> element

Где тип element не являетсяопределены.Обратите внимание, что не определено, как reader должен работать внутри или откуда get_next() извлекает его элементы.Его абстрактный.

Контейнер - это просто (возможно, абстрактный) тип данных, который может содержать экземпляры других типов данных, например вектор.Наш 'reader явно не должен быть контейнером: в приведенном выше определении ничего не сказано о том, что он будет содержать экземпляры других типов данных.

Вы можете реализовать reader, который продолжает чтение с клавиатуры и возвращает нажатые клавиши.,Эта реализация явно не контейнер - она ​​не содержит других элементов.Вы также можете реализовать reader, который является вектором, который также реализует два метода выше.Каждый вызов get_next() может вернуть свой первый элемент, затем второй и так далее.Эта реализация содержит другие элементы, поэтому она также будет контейнером.

0 голосов
/ 20 мая 2018

Абстрактный тип данных - это просто логическое описание способа хранения данных и операций, которые будут разрешены с этими данными.Например, стек определяется как тип данных с операциями push, pop и т. Д. И доступом LIFO.

Контейнер - это очень абстрактная идея, но обычно она подразумевает (для меня в любом случае) некоторую формуинкапсуляция - в том смысле, что она может маскировать сложности базового объекта или, возможно, представлять единый интерфейс с рядом различных возможных базовых объектов.Это слово так прочно укоренилось в словаре программиста, что люди все время используют его, и поэтому его значение очень размыто.

...