#include <set>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <iostream>
#include <Windows.h>
using namespace std;
class compareInt
{
public:
bool operator()(const int &a,const int &b){
return a > b;
}
protected:
private:
};
class Timer{
public:
Timer(){
QueryPerformanceFrequency(&_frequency);
}
void Start()
{
QueryPerformanceCounter(&_begin);
}
double End()
{
QueryPerformanceCounter(&_end);
double timeUsed = 1.0 * (_end.QuadPart - _begin.QuadPart) / _frequency.QuadPart;
printf("Time used : %f s\n", timeUsed);
return timeUsed;
}
private:
LARGE_INTEGER _frequency;
LARGE_INTEGER _begin;
LARGE_INTEGER _end;
};
int main()
{
vector<int> sourceVec, destinationVec;
set<int, compareInt> sourceSet, destinationSet;
sourceVec.reserve(1000);
destinationVec.reserve(1000);
for (int i = 0; i < 1000;)
{
int x = rand() % 5000;
if (sourceSet.find(x) == sourceSet.end())
{
sourceSet.insert(x);
sourceVec.push_back(x);
i++;
}
}
for (int i = 0; i < 1000;)
{
int y = rand() % 5000;
if (destinationSet.find(y) == destinationSet.end())
{
destinationSet.insert(y);
destinationVec.push_back(y);
i++;
}
}
Timer tx;
int tt = 0,zz =0;
tx.Start();
for (int i = 0; i < 1000; ++i)
{
if(destinationSet.find(sourceVec[i]) == destinationSet.end() )
{
tt++;
cout << sourceVec[i] << " ";
if (tt % 10 == 0)
{
cout << endl;
}
}
}
for (int i = 0; i < 1000; ++i)
{
if(sourceSet.find(destinationVec[i]) == sourceSet.end() )
{
zz++;
cout << destinationVec[i] << " ";
if (zz % 10 == 0)
{
cout << endl;
}
}
}
cout << endl;
tx.End();
tt = 0;
zz = 0;
tx.Start();
for (int i = 0; i < 1000; ++i)
{
int j = 0;
while ( j < 1000 && destinationVec[j] != sourceVec[i] )
{
j++;
}
if (j >= 1000)
{
tt++;
cout << sourceVec[i] << " ";
}
if (tt % 10 == 0)
{
cout << endl;
}
}
for (int i = 0; i < 1000; ++i)
{
int j = 0;
while ( j < 1000 && sourceVec[j] != destinationVec[i])
{
j++;
}
if (j >= 1000)
{
tt++;
cout << destinationVec[i] << " ";
}
if (tt % 10 == 0)
{
cout << endl;
}
}
cout << endl;
tx.End();
return 0;
}