stlのvectorで重複チェック

vectorとかで要素が含まれるかどうかをいつも忘れるので覚書。以下は0から9までの乱数をpush_backしてからそれぞれの値が含まれるか表示するコード。

#include <algorithm>
#include <vector>
#include <iostream>
#include <stdlib.h>

double
myrand(void){
  return static_cast<double>(rand())/static_cast<double>(RAND_MAX);
}

using namespace std;
int
main(void){
  const int N = 10;
  vector <int> vec;
  while(vec.size()<N){
    int v = (int)(N*myrand());
    vec.push_back(v);
  }
  for(int i=0;i<vec.size();i++){
    cout << vec[i] << endl;
  }
  for(int i=0;i<N;i++){
    if(find(vec.begin(),vec.end(),i) == vec.end()){
      cout << i << " " << "No" << endl;
    }else{
      cout << i << " " << "Yes" << endl;
    }
  }
}

実行結果。

$ g++ test.cc
$ ./a.out
8
3
7
7
9
1
3
7
2
5
0 No
1 Yes
2 Yes
3 Yes
4 No
5 Yes
6 No
7 Yes
8 Yes
9 Yes