177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/* 277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1994 477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Hewlett-Packard Company 577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1996,1997 777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Silicon Graphics Computer Systems, Inc. 877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1997 1077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Moscow Center for SPARC Technology 1177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1999 1377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Boris Fomitchev 1477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * This material is provided "as is", with absolutely no warranty expressed 1677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * or implied. Any use is at your own risk. 1777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to use or copy this software for any purpose is hereby granted 1977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * without fee, provided the above notices are retained on all copies. 2077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to modify the code and to distribute modified code is granted, 2177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * provided the above notices are retained, and a notice that the code was 2277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * modified is included with the above copyright notice. 2377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 2477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */ 2577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/* NOTE: This is an internal header file, included by other STL headers. 2777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * You should not attempt to use it directly. 2877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */ 2977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_ALGO_H 3177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define _STLP_INTERNAL_ALGO_H 3277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_ALGOBASE_H 3477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_algobase.h> 3577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 3677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_HEAP_H 3877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_heap.h> 3977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 4077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_ITERATOR_H 4277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_iterator.h> 4377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 4477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_FUNCTION_BASE_H 4677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_function_base.h> 4777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 4877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (__SUNPRO_CC) && !defined (_STLP_INTERNAL_CSTDIO) 5077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// remove() conflict 5177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_cstdio.h> 5277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 5377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 5477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_BEGIN_NAMESPACE 5577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 5677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// for_each. Apply a function to every element of a range. 5777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _Function> 5877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _Function 5977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerfor_each(_InputIter __first, _InputIter __last, _Function __f) { 6077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first) 6177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __f(*__first); 6277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __f; 6377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 6477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// count_if 6677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _Predicate> 6777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_InputIter) 6877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnercount_if(_InputIter __first, _InputIter __last, _Predicate __pred) { 6977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 7077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DIFFERENCE_TYPE(_InputIter) __n = 0; 7177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first) { 7277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__pred(*__first)) 7377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__n; 7477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 7577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __n; 7677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 7777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// adjacent_find. 7977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 8077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _BinaryPredicate> 8177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _ForwardIter 8277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneradjacent_find(_ForwardIter __first, _ForwardIter __last, 8377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BinaryPredicate __binary_pred) { 8477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 8577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__first == __last) 8677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __last; 8777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter __next = __first; 8877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner while(++__next != __last) { 8977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__binary_pred(*__first, *__next)) 9077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __first; 9177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __first = __next; 9277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 9377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __last; 9477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 9577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter> 9777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _ForwardIter 9877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneradjacent_find(_ForwardIter __first, _ForwardIter __last) { 9977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return adjacent_find(__first, __last, 10077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __equal_to(_STLP_VALUE_TYPE(__first, _ForwardIter))); 10177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 10277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_ANACHRONISMS) 10477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _Tp, class _Size> 10577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP void 10677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnercount(_InputIter __first, _InputIter __last, const _Tp& __val, _Size& __n) { 10777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 10877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first) 10977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (*__first == __val) 11077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__n; 11177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 11277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _Predicate, class _Size> 11477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP void 11577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnercount_if(_InputIter __first, _InputIter __last, _Predicate __pred, _Size& __n) { 11677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 11777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first) 11877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__pred(*__first)) 11977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__n; 12077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 12177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 12277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 12377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter1, class _ForwardIter2> 12477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1, 12577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter2 __first2, _ForwardIter2 __last2); 12677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 12777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// search_n. Search for __count consecutive copies of __val. 12877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Integer, class _Tp> 12977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last, 13077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Integer __count, const _Tp& __val); 13177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Integer, class _Tp, class _BinaryPred> 13277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last, 13377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Integer __count, const _Tp& __val, _BinaryPred __binary_pred); 13477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 13577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _ForwardIter> 13677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _InputIter find_first_of(_InputIter __first1, _InputIter __last1, 13777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter __first2, _ForwardIter __last2) { 13877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) 13977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) 14077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __find_first_of(__first1, __last1, __first2, __last2); 14177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 14277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 14377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _ForwardIter, class _BinaryPredicate> 14477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _InputIter 14577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerfind_first_of(_InputIter __first1, _InputIter __last1, 14677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter __first2, _ForwardIter __last2, _BinaryPredicate __comp) { 14777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) 14877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) 14977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __find_first_of(__first1, __last1, __first2, __last2, __comp); 15077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 15177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter1, class _ForwardIter2> 15377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter1 15477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerfind_end(_ForwardIter1 __first1, _ForwardIter1 __last1, 15577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter2 __first2, _ForwardIter2 __last2); 15677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// swap_ranges 15877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter1, class _ForwardIter2> 15977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _ForwardIter2 16077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerswap_ranges(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2) { 16177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) 16277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first1 != __last1; ++__first1, ++__first2) 16377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iter_swap(__first1, __first2); 16477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __first2; 16577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 16677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 16777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// transform 16877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter, class _UnaryOperation> 16977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _OutputIter 17077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertransform(_InputIter __first, _InputIter __last, _OutputIter __result, _UnaryOperation __opr) { 17177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 17277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first, ++__result) 17377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = __opr(*__first); 17477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 17577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 17677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _OutputIter, class _BinaryOperation> 17777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _OutputIter 17877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertransform(_InputIter1 __first1, _InputIter1 __last1, 17977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _OutputIter __result,_BinaryOperation __binary_op) { 18077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) 18177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result) 18277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = __binary_op(*__first1, *__first2); 18377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 18477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 18577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// replace_if, replace_copy, replace_copy_if 18777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Predicate, class _Tp> 18977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP void 19077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerreplace_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred, const _Tp& __new_value) { 19177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 19277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first) 19377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__pred(*__first)) 19477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__first = __new_value; 19577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 19677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter, class _Tp> 19877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _OutputIter 19977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerreplace_copy(_InputIter __first, _InputIter __last,_OutputIter __result, 20077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _Tp& __old_value, const _Tp& __new_value) { 20177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 20277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first, ++__result) 20377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = *__first == __old_value ? __new_value : *__first; 20477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 20577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 20677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 20777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Iterator, class _OutputIter, class _Predicate, class _Tp> 20877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _OutputIter 20977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerreplace_copy_if(_Iterator __first, _Iterator __last, 21077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, 21177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Predicate __pred, const _Tp& __new_value) { 21277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 21377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first, ++__result) 21477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = __pred(*__first) ? __new_value : *__first; 21577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 21677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 21777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 21877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// generate and generate_n 21977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 22077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Generator> 22177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP void 22277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnergenerate(_ForwardIter __first, _ForwardIter __last, _Generator __gen) { 22377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 22477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first) 22577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__first = __gen(); 22677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 22777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 22877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _OutputIter, class _Size, class _Generator> 22977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP void 23077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnergenerate_n(_OutputIter __first, _Size __n, _Generator __gen) { 23177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __n > 0; --__n, ++__first) 23277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__first = __gen(); 23377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 23477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// remove, remove_if, remove_copy, remove_copy_if 23677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter, class _Tp> 23877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _OutputIter 23977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerremove_copy(_InputIter __first, _InputIter __last,_OutputIter __result, const _Tp& __val) { 24077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 24177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first) { 24277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (!(*__first == __val)) { 24377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = *__first; 24477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__result; 24577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 24677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 24777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 24877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 24977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 25077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter, class _Predicate> 25177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _OutputIter 25277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerremove_copy_if(_InputIter __first, _InputIter __last, _OutputIter __result, _Predicate __pred) { 25377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 25477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for ( ; __first != __last; ++__first) { 25577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (!__pred(*__first)) { 25677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = *__first; 25777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__result; 25877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 25977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 26077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 26177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 26277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 26377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp> 26477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _ForwardIter 26577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerremove(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { 26677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 26777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __first = find(__first, __last, __val); 26877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__first == __last) 26977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __first; 27077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner else { 27177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter __next = __first; 27277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return remove_copy(++__next, __last, __first, __val); 27377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 27477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 27577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 27677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Predicate> 27777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP _ForwardIter 27877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerremove_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) { 27977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 28077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __first = find_if(__first, __last, __pred); 28177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if ( __first == __last ) 28277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __first; 28377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner else { 28477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter __next = __first; 28577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return remove_copy_if(++__next, __last, __first, __pred); 28677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 28777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 28877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 28977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// unique and unique_copy 29077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter> 29177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result); 29277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 29377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _OutputIter, class _BinaryPredicate> 29477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter unique_copy(_InputIter __first, _InputIter __last,_OutputIter __result, 29577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BinaryPredicate __binary_pred); 29677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 29777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter> 29877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _ForwardIter unique(_ForwardIter __first, _ForwardIter __last) { 29977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __first = adjacent_find(__first, __last); 30077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return unique_copy(__first, __last, __first); 30177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 30277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 30377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _BinaryPredicate> 30477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _ForwardIter unique(_ForwardIter __first, _ForwardIter __last, 30577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BinaryPredicate __binary_pred) { 30677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __first = adjacent_find(__first, __last, __binary_pred); 30777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return unique_copy(__first, __last, __first, __binary_pred); 30877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 30977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 31077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// reverse and reverse_copy, and their auxiliary functions 31177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 31277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 31377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 31477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _BidirectionalIter> 31577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP void 31677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner__reverse(_BidirectionalIter __first, _BidirectionalIter __last, const bidirectional_iterator_tag &) { 31777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for (; __first != __last && __first != --__last; ++__first) 31877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_STD::iter_swap(__first,__last); 31977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 32077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 32177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter> 32277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP void 32377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner__reverse(_RandomAccessIter __first, _RandomAccessIter __last, const random_access_iterator_tag &) { 32477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for (; __first < __last; ++__first) 32577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_STD::iter_swap(__first, --__last); 32677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 32777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 32877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 32977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 33077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _BidirectionalIter> 33177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline void 33277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerreverse(_BidirectionalIter __first, _BidirectionalIter __last) { 33377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 33477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __reverse(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _BidirectionalIter)); 33577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 33677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 33777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _BidirectionalIter, class _OutputIter> 33877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_INLINE_LOOP 33977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter reverse_copy(_BidirectionalIter __first, 34077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BidirectionalIter __last, 34177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result) { 34277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 34377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner while (__first != __last) { 34477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner --__last; 34577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__result = *__last; 34677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ++__result; 34777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 34877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __result; 34977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 35077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 35177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter> 35277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last); 35377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 35477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _OutputIter> 35577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _OutputIter rotate_copy(_ForwardIter __first, _ForwardIter __middle, 35677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter __last, _OutputIter __result) { 35777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_STD::copy(__first, __middle, copy(__middle, __last, __result)); 35877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 35977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 36077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// random_shuffle 36177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 36277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter> 36377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last); 36477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 36577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter, class _RandomNumberGenerator> 36677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last, 36777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomNumberGenerator& __rand); 36877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 36977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_EXTENSIONS) 37077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// random_sample and random_sample_n (extensions, not part of the standard). 37177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 37277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _OutputIter, class _Distance> 37377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last, 37477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __out_ite, const _Distance __n); 37577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 37677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _OutputIter, class _Distance, 37777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner class _RandomNumberGenerator> 37877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last, 37977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __out_ite, const _Distance __n, 38077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomNumberGenerator& __rand); 38177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 38277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _RandomAccessIter> 38377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_RandomAccessIter 38477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerrandom_sample(_InputIter __first, _InputIter __last, 38577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __out_first, _RandomAccessIter __out_last); 38677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 38777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _RandomAccessIter, 38877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner class _RandomNumberGenerator> 38977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_RandomAccessIter 39077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerrandom_sample(_InputIter __first, _InputIter __last, 39177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __out_first, _RandomAccessIter __out_last, 39277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomNumberGenerator& __rand); 39377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 39477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_NO_EXTENSIONS */ 39577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 39677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// partition, stable_partition, and their auxiliary functions 39777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 39877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Predicate> 39977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred); 40077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 40177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Predicate> 40277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter 40377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerstable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred); 40477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 40577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// sort() and its auxiliary functions. 40677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 40777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 40877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Size> 40977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _Size __lg(_Size __n) { 41077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Size __k; 41177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for (__k = 0; __n != 1; __n >>= 1) ++__k; 41277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __k; 41377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 41477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 41577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 41677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 41777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter> 41877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid sort(_RandomAccessIter __first, _RandomAccessIter __last); 41977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter, class _Compare> 42077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp); 42177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 42277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// stable_sort() and its auxiliary functions. 42377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter> 42477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid stable_sort(_RandomAccessIter __first, 42577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __last); 42677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 42777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter, class _Compare> 42877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid stable_sort(_RandomAccessIter __first, 42977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __last, _Compare __comp); 43077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 43177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// partial_sort, partial_sort_copy, and auxiliary functions. 43277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 43377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter> 43477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid partial_sort(_RandomAccessIter __first, _RandomAccessIter __middle, 43577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __last); 43677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 43777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter, class _Compare> 43877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle, 43977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __last, _Compare __comp); 44077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 44177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _RandomAccessIter> 44277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_RandomAccessIter 44377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpartial_sort_copy(_InputIter __first, _InputIter __last, 44477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __result_first, _RandomAccessIter __result_last); 44577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 44677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter, class _RandomAccessIter, class _Compare> 44777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_RandomAccessIter 44877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpartial_sort_copy(_InputIter __first, _InputIter __last, 44977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __result_first, 45077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __result_last, _Compare __comp); 45177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 45277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// nth_element() and its auxiliary functions. 45377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter> 45477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid nth_element(_RandomAccessIter __first, _RandomAccessIter __nth, 45577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __last); 45677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 45777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter, class _Compare> 45877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid nth_element(_RandomAccessIter __first, _RandomAccessIter __nth, 45977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _RandomAccessIter __last, _Compare __comp); 46077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 46177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// auxiliary class for lower_bound, etc. 46277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 46377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 46477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _T1, class _T2> 46577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerstruct __less_2 { 46677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner bool operator() (const _T1& __x, const _T2& __y) const { return __x < __y ; } 46777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 46877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 46977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _T1, class _T2> 47077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner__less_2<_T1,_T2> __less2(_T1*, _T2* ) { return __less_2<_T1, _T2>(); } 47177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 47277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_FUNCTION_PARTIAL_ORDER) 47377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp> 47477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerless<_Tp> __less2(_Tp*, _Tp* ) { return less<_Tp>(); } 47577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 47677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 47777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 47877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 47977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Binary search (lower_bound, upper_bound, equal_range, binary_search). 48077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp> 48177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last, 48277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _Tp& __val) { 48377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 48477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __lower_bound(__first, __last, __val, 48577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0), 48677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __less2((_Tp*)0, _STLP_VALUE_TYPE(__first, _ForwardIter)), 48777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _ForwardIter)); 48877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 48977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 49077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp, class _Compare> 49177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last, 49277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _Tp& __val, _Compare __comp) { 49377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 49477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __lower_bound(__first, __last, __val, __comp, __comp, 49577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _ForwardIter)); 49677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 49777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 49877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 49977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 50077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp, class _Compare1, class _Compare2, class _Distance> 50177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter __upper_bound(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, 50277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare1 __comp1, _Compare2 __comp2, _Distance*); 50377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 50477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 50577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 50677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp> 50777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last, 50877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _Tp& __val) { 50977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 51077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __upper_bound(__first, __last, __val, 51177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0), 51277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __less2((_Tp*)0, _STLP_VALUE_TYPE(__first, _ForwardIter)), 51377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _ForwardIter)); 51477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 51577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 51677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp, class _Compare> 51777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last, 51877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _Tp& __val, _Compare __comp) { 51977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 52077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __upper_bound(__first, __last, __val, __comp, __comp, 52177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _ForwardIter)); 52277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 52377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 52477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 52577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 52677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp, class _Compare1, class _Compare2, class _Distance> 52777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpair<_ForwardIter, _ForwardIter> 52877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner__equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, 52977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare1 __comp1, _Compare2 __comp2, _Distance*); 53077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 53177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 53277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 53377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp> 53477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline pair<_ForwardIter, _ForwardIter> 53577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerequal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { 53677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 53777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __equal_range(__first, __last, __val, 53877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0), 53977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __less2((_Tp*)0, _STLP_VALUE_TYPE(__first, _ForwardIter)), 54077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _ForwardIter)); 54177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 54277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 54377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp, class _Compare> 54477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline pair<_ForwardIter, _ForwardIter> 54577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerequal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, 54677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare __comp) { 54777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 54877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __equal_range(__first, __last, __val, __comp, __comp, 54977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _ForwardIter)); 55077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 55177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 55277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp> 55377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool binary_search(_ForwardIter __first, _ForwardIter __last, 55477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _Tp& __val) { 55577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 55677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter __i = _STLP_PRIV __lower_bound(__first, __last, __val, 55777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0), 55877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __less2((_Tp*)0, _STLP_VALUE_TYPE(__first, _ForwardIter)), 55977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _ForwardIter)); 56077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __i != __last && !(__val < *__i); 56177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 56277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 56377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Tp, class _Compare> 56477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool binary_search(_ForwardIter __first, _ForwardIter __last, 56577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _Tp& __val, 56677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare __comp) { 56777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 56877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ForwardIter __i = _STLP_PRIV __lower_bound(__first, __last, __val, __comp, __comp, 56977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DISTANCE_TYPE(__first, _ForwardIter)); 57077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __i != __last && !__comp(__val, *__i); 57177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 57277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 57377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// merge, with and without an explicitly supplied comparison function. 57477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 57577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _OutputIter> 57677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1, 57777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, 57877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result); 57977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 58077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _OutputIter, 58177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner class _Compare> 58277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1, 58377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, 58477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, _Compare __comp); 58577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 58677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 58777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// inplace_merge and its auxiliary functions. 58877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 58977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 59077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _BidirectionalIter> 59177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid inplace_merge(_BidirectionalIter __first, 59277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BidirectionalIter __middle, 59377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BidirectionalIter __last) ; 59477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 59577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _BidirectionalIter, class _Compare> 59677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid inplace_merge(_BidirectionalIter __first, 59777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BidirectionalIter __middle, 59877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _BidirectionalIter __last, _Compare __comp); 59977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 60077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Set algorithms: includes, set_union, set_intersection, set_difference, 60177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// set_symmetric_difference. All of these algorithms have the precondition 60277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// that their input ranges are sorted and the postcondition that their output 60377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// ranges are sorted. 60477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 60577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2> 60677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool includes(_InputIter1 __first1, _InputIter1 __last1, 60777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2); 60877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 60977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _Compare> 61077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool includes(_InputIter1 __first1, _InputIter1 __last1, 61177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, _Compare __comp); 61277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 61377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _OutputIter> 61477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1, 61577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, 61677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result); 61777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 61877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _OutputIter, 61977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner class _Compare> 62077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1, 62177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, 62277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, _Compare __comp); 62377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 62477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _OutputIter> 62577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1, 62677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, 62777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result); 62877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 62977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _OutputIter, 63077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner class _Compare> 63177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1, 63277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, 63377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, _Compare __comp); 63477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 63577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 63677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 63777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _OutputIter> 63877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1, 63977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, 64077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result); 64177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 64277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _OutputIter, 64377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner class _Compare> 64477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1, 64577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, 64677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, _Compare __comp); 64777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 64877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _OutputIter> 64977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter 65077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerset_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1, 65177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, 65277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result); 65377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 65477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 65577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _InputIter1, class _InputIter2, class _OutputIter, 65677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner class _Compare> 65777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_OutputIter 65877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerset_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1, 65977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter2 __first2, _InputIter2 __last2, 66077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _OutputIter __result, 66177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare __comp); 66277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 66377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 66477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// min_element and max_element, with and without an explicitly supplied 66577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// comparison function. 66677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 66777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter> 66877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last); 66977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Compare> 67077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last, 67177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare __comp); 67277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 67377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter> 67477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last); 67577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 67677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _Compare> 67777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last, 67877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare __comp); 67977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 68077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// next_permutation and prev_permutation, with and without an explicitly 68177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// supplied comparison function. 68277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 68377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _BidirectionalIter> 68477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last); 68577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 68677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _BidirectionalIter, class _Compare> 68777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last, 68877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare __comp); 68977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 69077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 69177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _BidirectionalIter> 69277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last); 69377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 69477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 69577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _BidirectionalIter, class _Compare> 69677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last, 69777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare __comp); 69877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 69977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_EXTENSIONS) 70077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// is_heap, a predicate testing whether or not a range is 70177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// a heap. This function is an extension, not part of the C++ 70277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// standard. 70377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 70477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter> 70577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool is_heap(_RandomAccessIter __first, _RandomAccessIter __last); 70677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 70777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _RandomAccessIter, class _StrictWeakOrdering> 70877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool is_heap(_RandomAccessIter __first, _RandomAccessIter __last, 70977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _StrictWeakOrdering __comp); 71077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 71177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// is_sorted, a predicated testing whether a range is sorted in 71277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// nondescending order. This is an extension, not part of the C++ 71377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// standard. 71477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 71577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 71677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _StrictWeakOrdering> 71777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerbool __is_sorted(_ForwardIter __first, _ForwardIter __last, 71877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _StrictWeakOrdering __comp); 71977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 72077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 72177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter> 72277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool is_sorted(_ForwardIter __first, _ForwardIter __last) { 72377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __is_sorted(__first, __last, 72477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _ForwardIter))); 72577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 72677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 72777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _ForwardIter, class _StrictWeakOrdering> 72877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool is_sorted(_ForwardIter __first, _ForwardIter __last, 72977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _StrictWeakOrdering __comp) { 73077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _STLP_PRIV __is_sorted(__first, __last, __comp); 73177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner} 73277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 73377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 73477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_END_NAMESPACE 73577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 73677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_LINK_TIME_INSTANTIATION) 73777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_algo.c> 73877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 73977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 74077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_INTERNAL_ALGO_H */ 74177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 74277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Local Variables: 74377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// mode:C++ 74477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// End: 74577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 746