Not really, you must store them in a vector, vertices are not that hard to copy, they use default copy c-tor and vector might seem bad for erasing elements because it has to move all the others but cpu caches are very good at that and so vectors are better than lists because lists maximize cache misses with random access(accordig to Stroustrup in his presentation about containers, abstraction,c++, moves and threads, should hold true for c++98 I guess). You can also create own wrapper around vector that just swaps the last few with the ones being erased and then pop_back last few to avoid moves of elements at all. This is swap-and-pop-back idiom.