была такая мысль..... а что если мне после удаления b понадобится попользоваться ещё a?? ведь после delete b a похерится...как быть в таком случае...
Такое бывает, я часто решаю так
vector <A> mDataVec;
....
vector <A *> ptrVec;
...
ptrVec.clear();
for (int i = 0; i < mDataVec.size(); ++i)
ptrVec.push_back(&mDataVec[i]);
Теперь я могу безболезненно удалять ptrVec, за хранение отвечает mDataVec. Отрицательная сторона - вектор указателей становится калечным если я меняю число элементов в mDataVec, об этом приходится помнить.