Spec SorterSpec
Sorts all elements using a custom compare function.

Extends Pool
All Extended Pool
All Subcl's SorterConfig, SorterConfigSize
Defined in <seqan/pipe.h>
Signature template <typename TValue, typename TConfig> struct Pool<TValue, SorterSpec<TConfig > >;

Template Parameters

TConfig Configuration Spec. Defines compare function, size type, and file type.
TValue The value type, that is the type of the stream elements.

Interface Function Overview

Interface Functions Inherited From Pool

Detailed Description

The Pool's input/output type is TValue and the size type is determined by the TConfig.

If there exists an explicit function mapping input elements to their destined positions in the output stream, MapperSpec should be preferred.

Example

#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;
}
Sorted elements:
-1
3
10