Я не могу понять, почему они разделили алгоритмы, итераторы и контейнеры в C++ STL. Если везде интенсивно используются шаблоны, то у нас могут быть классы, в которых все вещи собраны в одном месте с параметрами шаблона.
Некоторый текст, который я получил, объясняет, что итераторы помогают алгоритмам взаимодействовать с данными контейнеров, но что, если контейнеры предоставляют какой-то механизм для доступа к данным, которыми они обладают?