對於下面的代碼的載體:從一個指針刪除的指針
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設置爲已刪除的矢量地址」 - 這是什麼意思?你的代碼中沒有矢量被擦除,沒有理由用'p'做任何事情。 – AnT
基本上想要p是這個新的向量的地址,因爲擦除了這個向量並刪除了某個標記。 –
@約翰史密斯,沒有新的矢量。舊的矢量是唯一的矢量。它通過調用「擦除」而持續存在。 –