9 #ifndef ADOBE_ALGORITHM_MINMAX_HPP 10 #define ADOBE_ALGORITHM_MINMAX_HPP 14 #include <boost/range/begin.hpp> 15 #include <boost/range/end.hpp> 16 #include <boost/bind.hpp> 66 inline const T& (
min)(
const T& a,
const T& b)
67 {
return a < b ? a : b; }
76 inline T& (
min)(T& a, T& b)
77 {
return a < b ? a : b; }
86 inline const T& (
max)(
const T& a,
const T& b)
87 {
return b < a ? a : b; }
96 inline T& (
max)(T& a, T& b)
97 {
return b < a ? a : b; }
105 template <
class T,
class Compare>
106 inline const T& (
min)(
const T& a,
const T& b, Compare comp)
108 return (
std::min)(a, b, boost::bind(comp, _1, _2));
117 template <
class T,
class Compare>
118 inline T& (
min)(T& a, T& b, Compare comp)
120 return (
std::min)(a, b, boost::bind(comp, _1, _2));
129 template <
class T,
class Compare>
130 inline const T& (
max)(
const T& a,
const T& b, Compare comp)
132 return boost::bind(comp, _1, _2)(b, a) ? a : b;
141 template <
class T,
class Compare>
142 inline T& (
max)(T& a, T& b, Compare comp)
144 return boost::bind(comp, _1, _2)(b, a) ? a : b;
152 template <
class ForwardRange>
153 inline typename boost::range_iterator<ForwardRange>::type
min_element(ForwardRange& range)
163 template <
class ForwardRange>
164 inline typename boost::range_const_iterator<ForwardRange>::type
175 template <
class ForwardIterator,
class Compare>
176 inline ForwardIterator
min_element(ForwardIterator first, ForwardIterator last, Compare comp)
186 template <
class ForwardRange,
class Compare>
187 inline typename boost::range_iterator<ForwardRange>::type
198 template <
class ForwardRange,
class Compare>
199 inline typename boost::range_const_iterator<ForwardRange>::type
210 template <
class ForwardRange>
211 inline typename boost::range_iterator<ForwardRange>::type
max_element(ForwardRange& range)
221 template <
class ForwardRange>
222 inline typename boost::range_const_iterator<ForwardRange>::type
233 template <
class ForwardIterator,
class Compare>
234 inline ForwardIterator
max_element(ForwardIterator first, ForwardIterator last, Compare comp)
244 template <
class ForwardRange,
class Compare>
245 inline typename boost::range_iterator<ForwardRange>::type
256 template <
class ForwardRange,
class Compare>
257 inline typename boost::range_const_iterator<ForwardRange>::type
boost::range_iterator< ForwardRange >::type min_element(ForwardRange &range)
minmax implementation
boost::range_const_iterator< ForwardRange >::type min_element(const ForwardRange &range, Compare comp)
minmax implementation
const T &() max(const T &a, const T &b)
minmax implementation
const T &() min(const T &a, const T &b)
minmax implementation
boost::range_const_iterator< ForwardRange >::type max_element(const ForwardRange &range, Compare comp)
minmax implementation
boost::range_iterator< ForwardRange >::type max_element(ForwardRange &range)
minmax implementation
T &() min(T &a, T &b, Compare comp)
minmax implementation