0

对于以下代码:

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);..但这不起作用,我得到一个分段错误,有什么想法吗?

4

1 回答 1

2

你不应该做任何事情。仍然像你打电话之前一样p指向。从向量中删除元素不会更改向量的地址。&xerase()

于 2012-11-20T20:00:11.477 回答