fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4.  
  5. struct cmp_subset
  6. {
  7. std::vector<int> vorder;
  8.  
  9. cmp_subset(const std::vector<int>& order)
  10. {
  11. vorder.resize(order.size());
  12. for (int i=0; i<order.size(); ++i)
  13. vorder.at(order[i]) = i;
  14. }
  15.  
  16. bool operator()(int lhs, int rhs) const
  17. {
  18. return vorder[lhs] < vorder[rhs];
  19. }
  20. };
  21.  
  22. int main()
  23. {
  24. std::vector<int> order = {5, 0, 4, 3, 2, 1, 7, 6};
  25. std::vector<int> subset = {0, 1, 2, 5};
  26.  
  27. for (auto x : subset)
  28. std::cout << x << ' ';
  29. std::cout << '\n';
  30.  
  31. std::sort(subset.begin(), subset.end(), cmp_subset(order));
  32.  
  33. for (auto x : subset)
  34. std::cout << x << ' ';
  35. std::cout << '\n';
  36.  
  37. return 0;
  38. }
  39. ////////////////////////////////////////////////////////////////////////////////
  40.  
Success #stdin #stdout 0s 3280KB
stdin
Standard input is empty
stdout
0 1 2 5 
5 0 2 1