The standard template library is part of the standard. Therefore, it should be available for all standard compatible compilers, if you have a standard distributor implementation (more on this).
The standard template library is processed "specially" according to the literature for historical reasons, C ++ was "born" in 1983, but the first standard was not released until 1998.
The first implementation of STL was also in 1983, but for the ADA language. The first port for C ++ was not completed until 1992 by HP.
In 1993, it was proposed to be included in the ANSI standard and was adopted in 1994 after some changes.
This makes STL on stdlib the fork of the original STL.
In the early days, some people used STL only to reference the original HP library, later supported by SGI, while other people used STL to refer to a subset of containers on stdlib.
The external behavior of the STL should be “the same” for all implementations, but memory packaging may differ from one implementation to another.
Today, the original C ++ STL is no longer supported and talks about STL should refer to stdlib containers, although the standard itself does not use the abbreviation STL.
Finally, stdlib containers use a standard allocator to manage memory. In the Linux GCC provided by libstdC ++, for embedded systems you need to implement the standard distributor yourself, since you do not have an OS that manages memory for you.
This also applies to other functions that rely on system calls. std::cout will not be available on an open metal system unless you define an implementation for it.