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