CGAL::min_element_if

Definition

The function min_element_if computes the minimum among the elements of a range which satisfy a certain predicate. It is modeled after the STL function min_element.

#include <CGAL/algorithm.h>

template < class ForwardIterator, class Predicate >
ForwardIterator
min_element_if ( ForwardIterator first,
ForwardIterator last,
Predicate pred)
returns an iterator referring to the minimal element among those satifying the predicate pred in the range [first, last). The ordering is defined by the operator< on VT where VT is the value type of ForwardIterator.
Requirement: pred is an unary function object: VT   bool.

template < class ForwardIterator, class Compare, class Predicate >
ForwardIterator
min_element_if ( ForwardIterator first,
ForwardIterator last,
Compare comp,
Predicate pred)
return an iterator referring to the minimal element among those satifying the predicate pred in the range [first, last). The ordering is defined by comp.
Requirement: comp is a binary function object: VT  ×  VT   bool where VT is the value type of ForwardIterator. pred is an unary function object: VT   bool.

See Also

CGAL::max_element_if
CGAL::min_max_element

Example

The following example program computes the minimal odd element of the sequence (3,5,2). Hence the output is min_odd = 3.

#include <CGAL/algorithm.h>
#include <CGAL/function_objects.h>
#include <vector>
#include <iostream>
#include <functional>

using std::vector;
using std::cout;
using std::endl;
using std::modulus;
using std::greater;
using std::bind2nd;
using CGAL::compose1_1;
using CGAL::min_element_if;

int main()
{
  vector< int > v;
  v.push_back(3);
  v.push_back(5);
  v.push_back(2);
  cout << "min_odd = "
       << *min_element_if(v.begin(), 
			  v.end(), 
			  compose1_1(bind2nd(greater< int >(), 0),
				     bind2nd(modulus< int >(), 2)))
       << endl;
  return 0;
}