algo/minmax1.cpp

The following code example is taken from the book
The C++ Standard Library - A Tutorial and Reference, 2nd Edition
by Nicolai M. Josuttis, Addison Wesley Longman, 2012
Copyright © 2012 by Pearson Education, Inc. and Nicolai M. Josuttis


#include <cstdlib>
#include "algostuff.hpp"
using namespace std;

bool absLess (int elem1, int elem2)
{
    return abs(elem1) < abs(elem2);
}

int main()
{
    deque<int> coll;

    INSERT_ELEMENTS(coll,2,6);
    INSERT_ELEMENTS(coll,-3,6);

    PRINT_ELEMENTS(coll);

    // process and print minimum and maximum
    cout << "minimum: "
         << *min_element(coll.cbegin(),coll.cend())
         << endl;
    cout << "maximum: "
         << *max_element(coll.cbegin(),coll.cend())
         << endl;

    // print min and max and their distance using minmax_element()
    auto mm = minmax_element(coll.cbegin(),coll.cend());
    cout << "min: " << *(mm.first) << endl;    // print minimum
    cout << "max: " << *(mm.second) << endl;   // print maximum
    cout << "distance: " << distance(mm.first,mm.second) << endl;

    // process and print minimum and maximum of absolute values
    cout << "minimum of absolute values: "
         << *min_element(coll.cbegin(),coll.cend(),
                         absLess)
         << endl;
    cout << "maximum of absolute values: "
         << *max_element(coll.cbegin(),coll.cend(),
                         absLess)
         << endl;
}