読者です 読者をやめる 読者になる 読者になる

土下座しながら探索中

主に競技プログラミング

C++のあれこれ vector編

vector内に存在するある値を全て消したい!
そんなときはeraseしてremoveしましょう。

例:

 vector<int> vec;
  for(int i=0;i<=20;i++)
    vec.push_back(i);

//vec内から偶数を消したい!
for(int i=0;i<=20;i++)
    if(i%2 == 0)
      vec[i] = 0;

 vec.erase(remove(vec.begin(),vec.end(),0),vec.end());

ちなみにvector内から重複している値を消し去りたいときは

vector<int> vec;
for(int i=0;i<10;i++)
  vec.push_back(i);
for(int i=0;i<10;i++)
  vec.push_back(i);

vec.erase(unique(vec.begin(),vec.end()),vec.end()); //これで重複を消す

みたいにします

vectorのサイズと初期化
vectorを宣言の段階である値に初期化したいときは次のようにします

vector<int> vec(10,99);//これでvecはサイズ10で要素はすべて99で初期化されます

宣言時以外でもassignを使うことでサイズ変更と一緒に初期化をしてくれます

vector<int> vec;
vec.assign(10,99) // 上の例と同じです