以下代码:
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);
..但这不是工作,我得到一个分段错误,任何想法?
答案 0 :(得分:2)
你不应该做任何事情。 p
仍然指向&x
,就像调用erase()
之前一样。从向量中删除元素不会更改向量的地址。