In my opinion, the difference between the STL and the C ++ standard library is somewhat similar to the relationship between Linux and GNU/Linux :
Historically, STL was the core (including containers, algorithms, and iterators, etc.), and the standard library is metaphorically a complete operating system built around the kernel that supplies everything else. The standard library made changes on top of the STL, but this part of the standard library has roots in the STL. (Remember how hard GNU people tried to remind us that Linux is just the kernel and insist on calling GNU / Linux?)
If the standard committee wrote the document instead of the C ++ standard, they probably would need to recognize the STL everywhere in the overlapping domain instead of requiring a distinction.
As stated in the comments in this answer , Bjarne Stroustrup, the inventor of C ++, described STL as
STL ("Library of standard templates", that is, containers and the algorithm of the standard library of ISO C ++ standards)
What is more, the main feature of STL, which was introduced into the standard library, is the concept according to which each STL algorithm must have a given algorithmic complexity of the worst case , which makes it an irrelevant question who implements STL. You only need to pay attention to the specification of the STL container or algorithm historically posted on the SGI website among other sources. This was quite important in prehistoric times, when everyone could come up with their own containers with different computational difficulties.
Other important STL functions introduced into the standard library include the new functional programming paradigm embodied in this <algorithm> and everywhere, which, in my opinion, enlivened C ++ as a language, complementing the traditional object-oriented programming paradigm.
In this sense, letβs return to your question, I consider it fair to say that containers, such as vector , belong to the STL (initially) and to the standard library.