Boost logo

Boost Users :

From: Jonathan Brownell (alphaomega_at_[hidden])
Date: 2002-02-10 01:46:39


I work in doing programming involving quite a bit of data analysis, and
lately I've gotten sick and tired of doing routine searches on vectors
and other linear containers to pull out maximum/minimum values. I ended
up sitting down and writing a unary function object that retains a value
based on any predicate. An example is worth a thousand words:

int array[10] = { 5, 4, 6, 3, 9, 0, 7, 2, 8, 1 };

int maximum = std::for_each(&array[0], &array[10],
        select_by_predicate<int, std::greater>());

int minimum = std::for_each(&array[0], &array[10],
        select_by_predicate<int, std::less>());

assert(maximum == 9 && minimum == 0);

Another example, using select_by_predicate independently:

select_by_predicate<int, std::greater> max_error(0);

for(loop through data samples)
{
        double error;
        ... analyze data sample error ...

        max_error.compare(error); // same as max_error(error)
}

std::cout << "Maximum error: " << max_error;

Is select_by_predicate something that boost users would be interested
in? It's been helpful to me in all kinds of contexts.

-Jonathan


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net