(disclaimer: all of the specific data structures specified here may not be required by the standard, but they are useful to remember, to help associate the rules with something specific)
std::string ~ = std::vector ; it is a dynamic array, if you continue to click elements at its end, after some time it will redistribute your elements.
std::list : each element is a new linked node list, so redistribution never happens wherever you insert a new element.
std::deque : it usually consists of several pages of elements; when the page is full, a new one is added and added to the list of pages; for this reason, redistribution of your elements never happens, and your elements never move if you keep clicking on the material at the beginning or at the end.
std::map / std::multimap / std::set / std::multiset : this is usually a binary tree, each element is allocated on its own; redistributions are never performed.
std::unordered_map / std::unordered_multimap / std::unordered_set / std::unordered_multiset : hash table; when the table is filled enough, renaming and redistribution occurs.
source share