Не совсем ясно, как организована вся структура данных и каковы будут последствия, но вполне возможно стереть элемент из вектора, имея указатель на этот элемент и сам вектор. Вам просто нужно сначала преобразовать указатель в итератор. Например, имея вектор
vector<stPiece> pieces;
и указатель на этот вектор
stPiece *mother;
Вы можете конвертировать указатель в индекс
vector<stPiece>::size_type i = mother - &pieces[0];
assert(i < pieces.size());
затем преобразовать индекс в итератор
vector<stPiece>::iterator it = pieces.begin() + i;
затем сотрите элемент
pieces.erase(it);
и все.
Однако, похоже, что в вашей структуре данных у вас может быть несколько долгоживущих указателей, указывающих на один и тот же вектор. Любые попытки стереть элементы из такого вектора немедленно лишат законной силы все эти указатели. Теоретически возможно «восстановить» их законность, если вы все сделаете осторожно, но это идет к крупному PITA.
Я не уверен, что понимаю, что вы имеете в виду, имея в виду, что все дочерние элементы будут удалены.