Я начал кодирование на С++, исходя из фона Java (фактически, я изучил С++ в своем университете, но мы никогда не попадали в STL и т.д.)
В любом случае, я дошел до того, что собираю данные во всех коллекциях, и сразу говорю себе: "Хорошо, это своего рода набор, и это List или ArrayList; и это карта и т.д." В Java я просто хотел бы, чтобы любой класс, который я пишу, реализовал интерфейс Set или Map или List; но я бы, вероятно, не дошел до того, что наследовал ArrayList или HashSet, а что - нет, реализации там были вовлечены, и я бы не хотел их испортить.
Теперь, что мне делать в С++ (со стандартной библиотекой)? Кажется, что нет абстрактных базовых классов для Sets, Maps, Lists и т.д. - эквивалент интерфейсов Java; с другой стороны, реализации стандартных контейнеров выглядят довольно ужасно. Хорошо, может быть, они не так ужасны, как только вы их узнаете, но предположим, что я просто хотел написать что-то вроде не виртуального класса, расширяющего AbstractSet в С++? Что-то я мог бы передать его любой функции, которая принимает Set? Как мне это сделать?
Просто для уточнения - я не обязательно хочу делать то, что распространяет на Java. Но, с другой стороны, если у меня есть объект, который концептуально является своего рода набором, я хочу наследовать что-то подходящее, получить бесплатные решения по умолчанию и руководствоваться моей IDE для реализации тех методов, которые я должен реализовать.