On Wed, Sep 30, 2015 at 8:04 PM <v9v@laposte.net> wrote:
Hi!

I'm a C++ beginner and any help would be very much appreciated.
I would like to convert this "std::sort" into "boost::sort::spreadsort::integer_sort".

I recommend looking at the examples in the documentation:
http://www.boost.org/doc/libs/develop/libs/sort/doc/html/sort/sort_hpp/integer_sort.html#sort.sort_hpp.integer_sort.integersort_examples
 

I know that I have to write "#include <boost/sort/spreadsort/integer_sort.hpp>" in
my header instead of "#include <algorithm>" but after that, this is too difficult...

Thanks!

-------------------------------------------------------------------
#include <iostream>
#include <algorithm>
#include <boost/sort/spreadsort/spreadsort.hpp> // combined header
using namespace boost::sort::spreadsort; 

using namespace std;

struct rightshift {
  rightshift(const int *const indexed_array) : nb1(indexed_array) {}
  inline int operator()(int x, unsigned offset) { return nb1[x] >> offset; }
  const int *const nb1;
}; 

int main() {

    int nb1[4] = {15,  5, 0, 20};
    int nb2[4] = {99,102, 8, 2};
    int indices[4];
// integer_sort just calls std::sort when there are less than 1000 inputs. 
// I tested with this code: 
constexpr int length = 10000;
    int nb1[length];
    int nb2[length];
    int indices[length];
    for (int i = 0; i < length; ++i) {
      nb1[length - i - 1] = 2 * i;
      nb2[i] = i;
      indices[i] = i;
    }

    for (short i=0; i<4; i++) indices[i]=i;

    sort(begin(indices), end(indices), [&](int i1, int i2) { return nb1[i1] < nb1[i2]; } );
 integer_sort(begin(indices), end(indices), rightshift(nb1), [&](int i1, int i2) { return nb1[i1] < nb1[i2]; });

    for (short i=0; i<4; i++) cout << nb1[indices[i]] << ' '; cout <<endl;  //  0  5  15 20
    for (short i=0; i<4; i++) cout << nb2[indices[i]] << ' '; cout <<endl;  //  8 102 99  2

    return 0;
}
---------------------------------------------------------------------
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users