STL stands for Standard Template Library. There’s no STL, only standard library currently, mathematical functions are not templated.
I’m not sure what your point was supposed to be, so you might want to state it clearly. For me “bad code” is that is harder to read and has premature optimization applied. Speaking of “doesn’t negate”… technologies aren’t set in stone and keep changing over time, so if something was a good idea in the past, it doesn’t mean it is still a good idea at the present time.
and if we’re talking about standard containers, those are usually slow in the debug build, because, for example, msvc applies a lot of sanity checks and warnings in debug build only. Now, if you want precise memory management and, say, no dynamic memory allocations, that’s different story.