|
@@ -485,6 +485,14 @@ template <class RandomAccessIterator, class Compare>
|
|
RandomAccessIterator
|
|
RandomAccessIterator
|
|
is_heap_until(RandomAccessIterator first, RandomAccessiterator last, Compare comp);
|
|
is_heap_until(RandomAccessIterator first, RandomAccessiterator last, Compare comp);
|
|
|
|
|
|
|
|
+template <class ForwardIterator>
|
|
|
|
+ ForwardIterator
|
|
|
|
+ min_element(ForwardIterator first, ForwardIterator last);
|
|
|
|
+
|
|
|
|
+template <class ForwardIterator, class Compare>
|
|
|
|
+ ForwardIterator
|
|
|
|
+ min_element(ForwardIterator first, ForwardIterator last, Compare comp);
|
|
|
|
+
|
|
template <class T>
|
|
template <class T>
|
|
const T&
|
|
const T&
|
|
min(const T& a, const T& b);
|
|
min(const T& a, const T& b);
|
|
@@ -493,6 +501,22 @@ template <class T, class Compare>
|
|
const T&
|
|
const T&
|
|
min(const T& a, const T& b, Compare comp);
|
|
min(const T& a, const T& b, Compare comp);
|
|
|
|
|
|
|
|
+template<class T>
|
|
|
|
+ T
|
|
|
|
+ min(initializer_list<T> t);
|
|
|
|
+
|
|
|
|
+template<class T, class Compare>
|
|
|
|
+ T
|
|
|
|
+ min(initializer_list<T> t, Compare comp);
|
|
|
|
+
|
|
|
|
+template <class ForwardIterator>
|
|
|
|
+ ForwardIterator
|
|
|
|
+ max_element(ForwardIterator first, ForwardIterator last);
|
|
|
|
+
|
|
|
|
+template <class ForwardIterator, class Compare>
|
|
|
|
+ ForwardIterator
|
|
|
|
+ max_element(ForwardIterator first, ForwardIterator last, Compare comp);
|
|
|
|
+
|
|
template <class T>
|
|
template <class T>
|
|
const T&
|
|
const T&
|
|
max(const T& a, const T& b);
|
|
max(const T& a, const T& b);
|
|
@@ -501,21 +525,37 @@ template <class T, class Compare>
|
|
const T&
|
|
const T&
|
|
max(const T& a, const T& b, Compare comp);
|
|
max(const T& a, const T& b, Compare comp);
|
|
|
|
|
|
-template <class ForwardIterator>
|
|
|
|
- ForwardIterator
|
|
|
|
- min_element(ForwardIterator first, ForwardIterator last);
|
|
|
|
|
|
+template<class T>
|
|
|
|
+ T
|
|
|
|
+ max(initializer_list<T> t);
|
|
|
|
|
|
-template <class ForwardIterator, class Compare>
|
|
|
|
- ForwardIterator
|
|
|
|
- min_element(ForwardIterator first, ForwardIterator last, Compare comp);
|
|
|
|
|
|
+template<class T, class Compare>
|
|
|
|
+ T
|
|
|
|
+ max(initializer_list<T> t, Compare comp);
|
|
|
|
|
|
-template <class ForwardIterator>
|
|
|
|
- ForwardIterator
|
|
|
|
- max_element(ForwardIterator first, ForwardIterator last);
|
|
|
|
|
|
+template<class ForwardIterator>
|
|
|
|
+ pair<ForwardIterator, ForwardIterator>
|
|
|
|
+ minmax_element(ForwardIterator first, ForwardIterator last);
|
|
|
|
|
|
-template <class ForwardIterator, class Compare>
|
|
|
|
- ForwardIterator
|
|
|
|
- max_element(ForwardIterator first, ForwardIterator last, Compare comp);
|
|
|
|
|
|
+template<class ForwardIterator, class Compare>
|
|
|
|
+ pair<ForwardIterator, ForwardIterator>
|
|
|
|
+ minmax_element(ForwardIterator first, ForwardIterator last, Compare comp);
|
|
|
|
+
|
|
|
|
+template<class T>
|
|
|
|
+ pair<const T&, const T&>
|
|
|
|
+ minmax(const T& a, const T& b);
|
|
|
|
+
|
|
|
|
+template<class T, class Compare>
|
|
|
|
+ pair<const T&, const T&>
|
|
|
|
+ minmax(const T& a, const T& b, Compare comp);
|
|
|
|
+
|
|
|
|
+template<class T>
|
|
|
|
+ pair<T, T>
|
|
|
|
+ minmax(initializer_list<T> t);
|
|
|
|
+
|
|
|
|
+template<class T, class Compare>
|
|
|
|
+ pair<T, T>
|
|
|
|
+ minmax(initializer_list<T> t, Compare comp);
|
|
|
|
|
|
template <class InputIterator1, class InputIterator2>
|
|
template <class InputIterator1, class InputIterator2>
|
|
bool
|
|
bool
|
|
@@ -2147,6 +2187,32 @@ rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterato
|
|
return _STD::copy(__first, __middle, _STD::copy(__middle, __last, __result));
|
|
return _STD::copy(__first, __middle, _STD::copy(__middle, __last, __result));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// min_element
|
|
|
|
+
|
|
|
|
+template <class _ForwardIterator, class _Compare>
|
|
|
|
+inline _LIBCPP_INLINE_VISIBILITY
|
|
|
|
+_ForwardIterator
|
|
|
|
+min_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp)
|
|
|
|
+{
|
|
|
|
+ if (__first != __last)
|
|
|
|
+ {
|
|
|
|
+ _ForwardIterator __i = __first;
|
|
|
|
+ while (++__i != __last)
|
|
|
|
+ if (__comp(*__i, *__first))
|
|
|
|
+ __first = __i;
|
|
|
|
+ }
|
|
|
|
+ return __first;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+template <class _ForwardIterator>
|
|
|
|
+inline _LIBCPP_INLINE_VISIBILITY
|
|
|
|
+_ForwardIterator
|
|
|
|
+min_element(_ForwardIterator __first, _ForwardIterator __last)
|
|
|
|
+{
|
|
|
|
+ return _STD::min_element(__first, __last,
|
|
|
|
+ __less<typename iterator_traits<_ForwardIterator>::value_type>());
|
|
|
|
+}
|
|
|
|
+
|
|
// min
|
|
// min
|
|
|
|
|
|
template <class _Tp, class _Compare>
|
|
template <class _Tp, class _Compare>
|
|
@@ -2165,36 +2231,34 @@ min(const _Tp& __a, const _Tp& __b)
|
|
return _STD::min(__a, __b, __less<_Tp>());
|
|
return _STD::min(__a, __b, __less<_Tp>());
|
|
}
|
|
}
|
|
|
|
|
|
-// max
|
|
|
|
-
|
|
|
|
-template <class _Tp, class _Compare>
|
|
|
|
|
|
+template<class _Tp, class _Compare>
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
-const _Tp&
|
|
|
|
-max(const _Tp& __a, const _Tp& __b, _Compare __comp)
|
|
|
|
|
|
+_Tp
|
|
|
|
+min(initializer_list<_Tp> __t, _Compare __comp)
|
|
{
|
|
{
|
|
- return __comp(__a, __b) ? __b : __a;
|
|
|
|
|
|
+ return *_STD::min_element(__t.begin(), __t.end(), __comp);
|
|
}
|
|
}
|
|
|
|
|
|
-template <class _Tp>
|
|
|
|
|
|
+template<class _Tp>
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
-const _Tp&
|
|
|
|
-max(const _Tp& __a, const _Tp& __b)
|
|
|
|
|
|
+_Tp
|
|
|
|
+min(initializer_list<_Tp> __t)
|
|
{
|
|
{
|
|
- return _STD::max(__a, __b, __less<_Tp>());
|
|
|
|
|
|
+ return *_STD::min_element(__t.begin(), __t.end());
|
|
}
|
|
}
|
|
|
|
|
|
-// min_element
|
|
|
|
|
|
+// max_element
|
|
|
|
|
|
template <class _ForwardIterator, class _Compare>
|
|
template <class _ForwardIterator, class _Compare>
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
_ForwardIterator
|
|
_ForwardIterator
|
|
-min_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp)
|
|
|
|
|
|
+max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp)
|
|
{
|
|
{
|
|
if (__first != __last)
|
|
if (__first != __last)
|
|
{
|
|
{
|
|
_ForwardIterator __i = __first;
|
|
_ForwardIterator __i = __first;
|
|
while (++__i != __last)
|
|
while (++__i != __last)
|
|
- if (__comp(*__i, *__first))
|
|
|
|
|
|
+ if (__comp(*__first, *__i))
|
|
__first = __i;
|
|
__first = __i;
|
|
}
|
|
}
|
|
return __first;
|
|
return __first;
|
|
@@ -2203,34 +2267,44 @@ min_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp)
|
|
template <class _ForwardIterator>
|
|
template <class _ForwardIterator>
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
_ForwardIterator
|
|
_ForwardIterator
|
|
-min_element(_ForwardIterator __first, _ForwardIterator __last)
|
|
|
|
|
|
+max_element(_ForwardIterator __first, _ForwardIterator __last)
|
|
{
|
|
{
|
|
- return _STD::min_element(__first, __last, __less<typename iterator_traits<_ForwardIterator>::value_type>());
|
|
|
|
|
|
+ return _STD::max_element(__first, __last,
|
|
|
|
+ __less<typename iterator_traits<_ForwardIterator>::value_type>());
|
|
}
|
|
}
|
|
|
|
|
|
-// max_element
|
|
|
|
|
|
+// max
|
|
|
|
|
|
-template <class _ForwardIterator, class _Compare>
|
|
|
|
|
|
+template <class _Tp, class _Compare>
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
-_ForwardIterator
|
|
|
|
-max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp)
|
|
|
|
|
|
+const _Tp&
|
|
|
|
+max(const _Tp& __a, const _Tp& __b, _Compare __comp)
|
|
{
|
|
{
|
|
- if (__first != __last)
|
|
|
|
- {
|
|
|
|
- _ForwardIterator __i = __first;
|
|
|
|
- while (++__i != __last)
|
|
|
|
- if (__comp(*__first, *__i))
|
|
|
|
- __first = __i;
|
|
|
|
- }
|
|
|
|
- return __first;
|
|
|
|
|
|
+ return __comp(__a, __b) ? __b : __a;
|
|
}
|
|
}
|
|
|
|
|
|
-template <class _ForwardIterator>
|
|
|
|
|
|
+template <class _Tp>
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
inline _LIBCPP_INLINE_VISIBILITY
|
|
-_ForwardIterator
|
|
|
|
-max_element(_ForwardIterator __first, _ForwardIterator __last)
|
|
|
|
|
|
+const _Tp&
|
|
|
|
+max(const _Tp& __a, const _Tp& __b)
|
|
|
|
+{
|
|
|
|
+ return _STD::max(__a, __b, __less<_Tp>());
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+template<class _Tp, class _Compare>
|
|
|
|
+inline _LIBCPP_INLINE_VISIBILITY
|
|
|
|
+_Tp
|
|
|
|
+max(initializer_list<_Tp> __t, _Compare __comp)
|
|
|
|
+{
|
|
|
|
+ return *_STD::max_element(__t.begin(), __t.end(), __comp);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+template<class _Tp>
|
|
|
|
+inline _LIBCPP_INLINE_VISIBILITY
|
|
|
|
+_Tp
|
|
|
|
+max(initializer_list<_Tp> __t)
|
|
{
|
|
{
|
|
- return _STD::max_element(__first, __last, __less<typename iterator_traits<_ForwardIterator>::value_type>());
|
|
|
|
|
|
+ return *_STD::max_element(__t.begin(), __t.end());
|
|
}
|
|
}
|
|
|
|
|
|
// minmax_element
|
|
// minmax_element
|
|
@@ -2293,6 +2367,45 @@ minmax_element(_ForwardIterator __first, _ForwardIterator __last)
|
|
return _STD::minmax_element(__first, __last, __less<typename iterator_traits<_ForwardIterator>::value_type>());
|
|
return _STD::minmax_element(__first, __last, __less<typename iterator_traits<_ForwardIterator>::value_type>());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// minmax
|
|
|
|
+
|
|
|
|
+template<class _Tp, class _Compare>
|
|
|
|
+inline _LIBCPP_INLINE_VISIBILITY
|
|
|
|
+pair<const _Tp&, const _Tp&>
|
|
|
|
+minmax(const _Tp& __a, const _Tp& __b, _Compare __comp)
|
|
|
|
+{
|
|
|
|
+ return __comp(__b, __a) ? pair<const _Tp&, const _Tp&>(__b, __a) :
|
|
|
|
+ pair<const _Tp&, const _Tp&>(__a, __b);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+template<class _Tp>
|
|
|
|
+inline _LIBCPP_INLINE_VISIBILITY
|
|
|
|
+pair<const _Tp&, const _Tp&>
|
|
|
|
+minmax(const _Tp& __a, const _Tp& __b)
|
|
|
|
+{
|
|
|
|
+ return _STD::minmax(__a, __b, __less<_Tp>());
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+template<class _Tp>
|
|
|
|
+inline _LIBCPP_INLINE_VISIBILITY
|
|
|
|
+pair<_Tp, _Tp>
|
|
|
|
+minmax(initializer_list<_Tp> __t)
|
|
|
|
+{
|
|
|
|
+ pair<const _Tp*, const _Tp*> __p =
|
|
|
|
+ _STD::minmax_element(__t.begin(), __t.end());
|
|
|
|
+ return pair<_Tp, _Tp>(*__p.first, *__p.second);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+template<class _Tp, class _Compare>
|
|
|
|
+inline _LIBCPP_INLINE_VISIBILITY
|
|
|
|
+pair<_Tp, _Tp>
|
|
|
|
+minmax(initializer_list<_Tp> __t, _Compare __comp)
|
|
|
|
+{
|
|
|
|
+ pair<const _Tp*, const _Tp*> __p =
|
|
|
|
+ _STD::minmax_element(__t.begin(), __t.end(), __comp);
|
|
|
|
+ return pair<_Tp, _Tp>(*__p.first, *__p.second);
|
|
|
|
+}
|
|
|
|
+
|
|
// random_shuffle
|
|
// random_shuffle
|
|
|
|
|
|
// __independent_bits_engine
|
|
// __independent_bits_engine
|