#line 111 "stl_extension.aw" #line 20 "cgal_header.awi" // ============================================================================ // // Copyright (c) 1997, 1998, 1999 The CGAL Consortium // // This software and related documentation is part of an INTERNAL release // of the Computational Geometry Algorithms Library (CGAL). It is not // intended for general use. // // ---------------------------------------------------------------------------- // // release : $CGAL_Revision: $ // release_date : $CGAL_Date: $ // // file : algorithm.h // chapter : $CGAL_Chapter: STL Extensions for CGAL $ // package : $CGAL_Package: STL_Extension $ // source : stl_extension.fw #line 37 "cgal_header.awi" // revision : $Revision$ // revision_date : $Date$ // author(s) : Michael Hoffmann // Lutz Kettner // // coordinator : INRIA, Sophia Antipolis // // STL like algorithms // ============================================================================ #line 115 "stl_extension.aw" #ifndef CGAL_ALGORITHM_H #define CGAL_ALGORITHM_H 1 #include #include CGAL_BEGIN_NAMESPACE #line 1610 "stl_extension.aw" template < class ForwardIterator > std::pair< ForwardIterator, ForwardIterator > min_max_element(ForwardIterator first, ForwardIterator last) { typedef std::pair< ForwardIterator, ForwardIterator > FP; FP result(first, first); if (first != last) while (++first != last) { if (*first < *result.first) result.first = first; if (*result.second < *first) result.second = first; } return result; } #line 1628 "stl_extension.aw" template < class ForwardIterator, class CompareMin, class CompareMax > std::pair< ForwardIterator, ForwardIterator > min_max_element(ForwardIterator first, ForwardIterator last, CompareMin comp_min, CompareMax comp_max) { typedef std::pair< ForwardIterator, ForwardIterator > FP; FP result(first, first); if (first != last) while (++first != last) { if (comp_min(*first, *result.first)) result.first = first; if (comp_max(*result.second, *first)) result.second = first; } return result; } #line 1652 "stl_extension.aw" template < class ForwardIterator, class Predicate > ForwardIterator min_element_if(ForwardIterator first, ForwardIterator last, Predicate pred) { ForwardIterator result = first; if (first != last) while (++first != last) if (*first < *result && pred(*first)) result = first; return result; } #line 1668 "stl_extension.aw" template < class ForwardIterator, class Compare, class Predicate > ForwardIterator min_element_if(ForwardIterator first, ForwardIterator last, Compare comp, Predicate pred) { ForwardIterator result = first; if (first != last) while (++first != last) if (comp(*first, *result) && pred(*first)) result = first; return result; } #line 1685 "stl_extension.aw" template < class ForwardIterator, class Predicate > ForwardIterator max_element_if(ForwardIterator first, ForwardIterator last, Predicate pred) { ForwardIterator result = first; if (first != last) while (++first != last) if (*result < *first && pred(*first)) result = first; return result; } #line 1701 "stl_extension.aw" template < class ForwardIterator, class Compare, class Predicate > ForwardIterator max_element_if(ForwardIterator first, ForwardIterator last, Compare comp, Predicate pred) { ForwardIterator result = first; if (first != last) while (++first != last) if (comp(*result, *first) && pred(*first)) result = first; return result; } #line 124 "stl_extension.aw" CGAL_END_NAMESPACE #endif // CGAL_ALGORITHM_H // // EOF //