Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. #include <iterator>
  2. #include <vector>
  3. #include <set>
  4. #include <functional>
  5. #include <iostream>
  6. #include <list>
  7.  
  8. struct A
  9. {
  10. A(int val) : num(val){}
  11. const int num;
  12. };
  13.  
  14. struct B
  15. {
  16. B(const A& a) : num(a.num){};
  17. const int num;
  18. };
  19.  
  20. void sortAndPrintViaSet(std::vector<B> vec)
  21. {
  22. std::cout << "SORT VIA SET\n=====================================\n";
  23. std::function<bool(const B&, const B&)> cmp = [](const B& l, const B& r){ return l.num < r.num; };
  24.  
  25. std::set<B, decltype(cmp)> sortedDst(cmp);
  26.  
  27. std::copy(vec.begin(), vec.end(), std::inserter(sortedDst, std::next(sortedDst.begin())));
  28.  
  29. vec.clear();
  30.  
  31. std::copy(sortedDst.begin(), sortedDst.end(), std::back_inserter(vec));
  32.  
  33. for (const auto obj : vec)
  34. {
  35. std::cout << obj.num << std::endl;
  36. }
  37. std::cout << "=====================================\n" << std::endl;
  38. }
  39.  
  40. void sortAndPrintViaList(std::vector<B> vec)
  41. {
  42. std::cout << "SORT VIA LIST\n=====================================\n";
  43.  
  44. std::list<B> list;
  45.  
  46. std::copy(vec.cbegin(), vec.cend(), std::back_inserter(list));
  47.  
  48. list.sort([](const B& l, const B& r){ return l.num < r.num; });
  49.  
  50. vec.clear();
  51.  
  52. std::copy(list.cbegin(), list.cend(), std::back_inserter(vec));
  53.  
  54. for (const auto obj : vec)
  55. {
  56. std::cout << obj.num << std::endl;
  57. }
  58. std::cout << "=====================================\n" << std::endl;
  59. }
  60.  
  61. int main()
  62. {
  63. std::vector<A> src;
  64. src.emplace_back(1);
  65. src.emplace_back(3);
  66. src.emplace_back(2);
  67.  
  68. std::vector<B> dst;
  69. std::copy(src.cbegin(), src.cend(), std::back_inserter(dst));
  70.  
  71. sortAndPrintViaSet(dst);
  72. sortAndPrintViaList(dst);
  73.  
  74. return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement