File: pool_sorter.cpp

package info (click to toggle)
seqan2 2.5.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 228,748 kB
  • sloc: cpp: 257,602; ansic: 91,967; python: 8,326; sh: 1,056; xml: 570; makefile: 229; awk: 51; javascript: 21
file content (45 lines) | stat: -rw-r--r-- 1,076 bytes parent folder | download | duplicates (2)
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;
}