fork download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <string>
  4. #include <vector>
  5.  
  6. //#include <QtCore>
  7.  
  8. int main()
  9. {
  10. // prepare sample data
  11. //typedef QPair<std::string, double> Pair;
  12. typedef std::pair<std::string, double> Pair;
  13. Pair
  14. a("Hello", 1.23),
  15. b("World", 2.34),
  16. c("Stack", 3.45),
  17. d("Overflow", 4.56),
  18. e("C++11", 5.67),
  19. f("C++14", 6.78),
  20. g("C++17", 7.89),
  21. h("C++20", 8.90),
  22. i("gin hill", 10.1),
  23. j("scheff", 0.0);
  24. std::vector<Pair> vec1({ a, b });
  25. std::vector<Pair> vec2({ c, d, a, e, h });
  26. std::vector<Pair> vec3({ i, j, a });
  27. // sort vectors
  28. std::sort(vec1.begin(), vec1.end());
  29. std::sort(vec2.begin(), vec2.end());
  30. std::sort(vec3.begin(), vec3.end());
  31. // intersect vectors
  32. std::vector<Pair> isect12;
  33. std::set_intersection(
  34. vec1.begin(), vec1.end(), vec2.begin(), vec2.end(),
  35. std::back_inserter(isect12));
  36. std::vector<Pair> isect123;
  37. std::set_intersection(
  38. isect12.begin(), isect12.end(), vec3.begin(), vec3.end(),
  39. std::back_inserter(isect123));
  40. // report
  41. const size_t n = isect123.size();
  42. std::cout << "Intersection contains " << n << " elements"
  43. << (n ? ':' : '.') << '\n';
  44. for (size_t i = 0; i < n; ++i) {
  45. const Pair &entry = isect123[i];
  46. std::cout << (i + 1) << ".: '" << entry.first
  47. << "', " << entry.second << '\n';
  48. }
  49. // done
  50. return 0;
  51. }
Success #stdin #stdout 0s 15248KB
stdin
Standard input is empty
stdout
Intersection contains 1 elements:
1.: 'Hello', 1.23