'Should I be using erase-remove at all
Aparently you already know where the object are, so no. You do this:
_pBkBuffer->erase( _pBkBuffer->begin() + _nStatics, _pBkBuffer->end() );
or, even better:
_pkBuffer->resize( _nStatics );
Erase remove idiom would be used if you had them scattered randomly in the vector. What's missing instead of ???
is a value that elements to be removed are compared to. Since you're storing pointers, you'd most likely need to provide a custom predicate (a function pointer, functor, or a lambda) and use remove_if
instead.