Boost logo

Boost :

Subject: [boost] Review Request: Creasing (Sequence Properties)
From: Grant Erickson (gerickson_at_[hidden])
Date: 2010-01-24 14:39:40


The creasing algorithm templates define four template functions for
determining the order properties of sequences, specifically:

    * Increasing
    * Decreasing
    * Strictly Increasing
    * Strictly Decreasing

The implementation is a fairly trivial composition of the STL adjacent_find,
not2 and {greater,less,greater_equal,less_equal}.

For the purposes of sequence ordering validation, using these templates is
more efficient and straightforward than creating a temporary, sorted version
of some sequence and comparing it against the original sequence.

Example:

        bool
        CheckPoints(const Points & inPoints)
        {
            const bool strictlyIncreasing =
is_strictly_increasing(inPoints.begin(),
                                       inPoints.end());

            if (!strictlyIncreasing) {
                cerr << "Points must be in increasing order with "
                        "no duplicate values."
                     << endl;
            }

            return strictlyIncreasing;
        }

The review files are available in both Sandbox and Vault:

Sandbox:

boost/algorithm/creasing.hpp
libs/algorithm/creasing/example/creasing_ex.cpp
libs/algorithm/creasing/example/Jamfile
libs/algorithm/creasing/test/creasing_test.cpp
libs/algorithm/creasing/test/Jamfile.v2

Vault:

http://www.boostpro.com/vault/index.php?action=downloadfile&filename=creasin
g.zip&directory=Algorithms

Regards,

Grant Erickson


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk