File: pool_sorter.cpp

package info (click to toggle)
seqan 1.4.2%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 34,164 kB
  • sloc: cpp: 226,267; python: 7,737; xml: 189; sh: 153; awk: 129; makefile: 48
file content (43 lines) | stat: -rw-r--r-- 1,085 bytes parent folder | download | duplicates (3)
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
#include <functional>
#include <iostream>

#include <seqan/basic.h>
#include <seqan/sequence.h>
#include <seqan/pipe.h>

// Custom 3-way comparator functor.  Return a value </==/> 0 (less than, equal
// to, greater than).
struct MyIntLessCmp : std::binary_function<int, int, int>
{
    int operator()(int const & lhs, int const & rhs) const
    {
        return lhs - rhs;
    }
};

int main()
{
    using namespace seqan;

    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;
}