In brief, it is safe to read from and write to different elements of the same container, to manipulate the iterators, and to execute const and certain non-const member functions concurrently. Any member function that invalidates iterators, such as vector::push_back or set::erase, requires synchronization with every thread that accesses any iterator, even the ones that aren’t invalidated. Those member functions that modify some elements, but don’t even look at others (vector::pop_back, iterator-based but not key-based set::erase), are safe to execute concurrently with accesses to the elements (just not through the iterators) they don’t access. STL (C++): Why does sizeof return the same value for all vectors, regardless of the type and number of elements in that vector? STL (C++): Why does sizeof return the same value for all vectors, regardless of the type and number of elements in that vector? This might lead to the conclusion that a perception of intellectual superiority or inferiority is of little or no value, and in fact is rather presumptuous. This is the second such question I’ve read this morning. I think perhaps the question-writer misunderstands how the American system works. It’s not like parliamentary systems where there is a prime minister and a bunch of other ministers from within parliament. Rather, whoever wins the presidency gets to pick a vice president and a cabinet. She, of her own accord, browsing trough a penpal-site in search for someone interesting to write to, picked me among all the other people there because Norway sounded like a interesting kinda place, and besides, wouldn’t it be awesome to see a real moose and the aurora borealis? Source.