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 に答える