Для следующего кода:
vector<int*> x;
vector<int*>* p;
// say I initiated x with a couple of integers
p = &x;
//erases the indicie of the given integer
void erase(vector<int*> &x, int n){
int i = 0;
while (*(x[i]) != n){
i++;
}
delete x[i];
x.erase(x.begin() + i);
}
Если я позвоню код erase(*p, 2);
Я хочу сейчас установить p
на этот адрес этого вектора, который был стерт … я пытаюсь p = &(*p);
… но это не работает, и я получаю ошибку сегментации, есть идеи?
Тебе не нужно ничего делать. p
еще указывает на &x
так же, как это было до того, как вы позвонили erase()
, Удаление элемента из вектора не меняет адрес вектора.
Других решений пока нет …