Hashmaps to the side ( that's more challenging in 'C' and one really compelling feature of C++ ) the rest can frequently be "faked" with arrays. Obviously, scale matters - having fifteen "vector" implementations in a given system means a little bit of library-ness is in order.
Much also depend on how much you really need dynamic allocation - it can be optional.
Much also depend on how much you really need dynamic allocation - it can be optional.