fork download
  1. #include <iostream>
  2. #include <sstream>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <iterator>
  6. using namespace std;
  7.  
  8. int main() {
  9. vector<int> v1,v2, sim;
  10. stringstream sfs1{"1 2 3 4 5"};
  11. stringstream sfs2{"8 4 5 7 1"};
  12.  
  13. // read 2 files
  14. copy(istream_iterator<int>(sfs1), istream_iterator<int>(), back_inserter(v1));
  15. copy(istream_iterator<int>(sfs2), istream_iterator<int>(), back_inserter(v2));
  16.  
  17. // make the sequence sorted for set_intersection to work
  18. sort(v1.begin(), v1.end());
  19. sort(v2.begin(), v2.end());
  20. set_intersection(v1.cbegin(), v1.cend(), v2.cbegin(), v2.cend(), back_inserter(sim));
  21. cout << "Similar elements: " << sim.size()<<endl;
  22. cout << "Similarity coefficient: "<< (double)sim.size()/max(v1.size(), v2.size())*100 <<"%"<<endl;
  23.  
  24. cout << "Explanations: "<<endl;
  25. cout<<" File1:"; copy(v1.cbegin(), v1.cend(), ostream_iterator<int>(cout," ")); cout<<endl;
  26. cout<<" File2:"; copy(v2.cbegin(), v2.cend(), ostream_iterator<int>(cout," ")); cout<<endl;
  27. cout<<" In common:"; copy(sim.cbegin(), sim.cend(), ostream_iterator<int>(cout," ")); cout<<endl;
  28.  
  29.  
  30. return 0;
  31. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
Similar elements: 3
Similarity coefficient: 60%
Explanations: 
  File1:1 2 3 4 5 
  File2:1 4 5 7 8 
  In common:1 4 5