Generally, no, your code is not thread-safe.
See relevant documentation for MSVC ("Thread Safety in the C++ Standard Library"):
If a single object is being written to by one thread, then all reads
and writes to that object on the same or other threads must be
protected. For example, given an object A, if thread 1 is writing to
A, then thread 2 must be prevented from reading from or writing to A.
Or for GCC ("Concurrency > Containers")
[...] locking must nearly always be done outside the container, by
client code (that'd be you, not us).
The C++ standard (even the C++11 one) does not mandate thread-safe access here. If you use some other compiler, its documentation will surely tell you something similar about concurrent access to container classes.