Базовый класс SequenceContainer? - PullRequest
1 голос
/ 19 июня 2019

В Java все контейнеры находятся в иерархии абстрактных базовых классов:

List<String> v1 = new LinkedList<String>();
AbstractSequentialList<String> v2 = new LinkedList<String>();

Есть ли аналог для SequenceContainer и std::vector в C ++?

1 Ответ

2 голосов
/ 19 июня 2019

Нет, std::vector не имеет (стандартного, документированного) базового класса и не имеет никаких virtual методов. Стандартная библиотека C ++ не использует полиморфизм во время выполнения, кроме классов iostream.

Стандартная библиотека C ++ больше ориентирована на статический полиморфизм времени компиляции с шаблонами. SequenceContainer - это просто имя способа взаимодействия с некоторым набором классов. Намерение состоит в том, что вы можете написать код шаблона, который взаимодействует с объектами только через этот документированный интерфейс, и он будет работать с любым классом, который удовлетворяет этим требованиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...