Nowadays, we usually use std::vector when we need nonassociative and nonordered containers. This is recommended by Andrei Alexandrescu and Herb Sutter in the book C++ Coding Standards. Even those users who did not read the book usually use std::vector. Why? Well, std::list is slower and uses much more resources than std::vector. The std::deque container is very close to std::vector, but does not store values continuously.
If we need a container where erasing and inserting elements does not invalidate iterators, then we are forced to choose a slow std::list.
But wait, we may assemble a better solution using Boost!