Стандартная библиотека C ++ может быть реализована различными способами. Некоторые разработчики пытаются справиться с современными идеями. Таким образом, использование оптимизированной реализации может привести к более быстрым и меньшим исполняемым файлам.
Взять, к примеру, Страшно . Некоторые разработчики этого еще не сделали, хотя это в значительной степени уменьшает раздувание STL. Когда вы делаете следующее:
vector<int> f;
vector<int, MyAllocator> s;
size_t fc = count(f.begin(), f.end(), SomeValue);
size_t sc = count(s.begin(), s.end(), SomeOtherValue);
«Старая» реализация может производить две разные функции count
в исполняемом файле результата, поскольку тип f
отличается от типа s
. Это потому, что тип итератора зависит от типа самого вектора, хотя он не должен быть таким. Лучшей идеей является разделение типа итератора в отдельном классе и предоставление typedef
в vector
, и компилятор выдаст только один count
. Это был просто пример, но я думаю, что есть еще что сказать о качестве некоторых реализаций.