fork(6) download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <iterator>
  4. #include <utility>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9. vector<size_t> rankSort(const float* v_temp, const size_t size) {
  10. vector<pair<float, size_t> > v_sort(size);
  11.  
  12. for (size_t i = 0U; i < size; ++i) {
  13. v_sort[i] = make_pair(v_temp[i], i);
  14. }
  15.  
  16. sort(v_sort.begin(), v_sort.end());
  17.  
  18. pair<double, size_t> rank;
  19. vector<size_t> result(size);
  20.  
  21. for (size_t i = 0U; i < size; ++i) {
  22. if (v_sort[i].first != rank.first) {
  23. rank = make_pair(v_sort[i].first, i);
  24. }
  25. result[v_sort[i].second] = rank.second;
  26. }
  27. return result;
  28. }
  29.  
  30. int main() {
  31. const float v_temp[] = { 10.0F, 332.0F, 42.0F, 0.9F, 0.0F, 42.0F };
  32. const vector<size_t> v_sort = rankSort(v_temp, sizeof(v_temp) / sizeof(*v_temp));
  33.  
  34. copy(v_sort.begin(), v_sort.end(), ostream_iterator<size_t>(cout, " "));
  35. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
2 5 3 1 0 3