1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#include <functional>
#include <iostream>
#include <seqan/basic.h>
#include <seqan/sequence.h>
#include <seqan/pipe.h>
using namespace seqan2;
// Custom 3-way comparator functor. Return a value </==/> 0 (less than, equal
// to, greater than).
struct MyIntLessCmp :
std::function<int(int, int)>
{
int operator()(int const & lhs, int const & rhs) const
{
return lhs - rhs;
}
};
int main()
{
typedef MyIntLessCmp TLess;
typedef SorterSpec<SorterConfig<TLess> > TSorterSpec;
typedef Pool<int, TSorterSpec> TSorterPool;
// Fill the sorter pool.
TSorterPool sorterPool;
resize(sorterPool, 3);
beginWrite(sorterPool);
push(sorterPool, 3);
push(sorterPool, 10);
push(sorterPool, -1);
endWrite(sorterPool);
// Fetch the resorted elements from the pool and print to stdout.
std::cout << "Sorted elements:\n";
beginRead(sorterPool);
for (; !eof(sorterPool); pop(sorterPool))
std::cout << front(sorterPool) << "\n";
endRead(sorterPool);
return 0;
}
|