STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Namespaces | Macros | Functions | Variables
algorithm File Reference
#include <xmemory>
#include <cliext/memory>

Classes

struct  _Rand_urng_from_func
 
class  cliext::_ISort
 

Namespaces

 cliext
 

Macros

#define _ALGORITHM_
 
#define _DEBUG_HEAP(first, last)
 
#define _DEBUG_HEAP_PRED(first, last, pred)
 
#define _CLI_ALGORITHM_
 
#define _STLCLRDB_HEAP(first, last)
 
#define _STLCLRDB_HEAP_PRED(first, last, pred)
 

Functions

template<class _InIt , class _Fn1 >
void _For_each (_InIt _First, _InIt _Last, _Fn1 &_Func)
 
template<class _InIt , class _Fn1 >
_Fn1 for_each (_InIt _First, _InIt _Last, _Fn1 _Func)
 
template<class _InIt , class _Pr >
_InIt _Find_if (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
_InIt find_if (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt _Adjacent_find (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt adjacent_find (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt >
_FwdIt adjacent_find (_FwdIt _First, _FwdIt _Last)
 
template<class _InIt , class _Pr >
iterator_traits< _InIt >::difference_type _Count_if (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
iterator_traits< _InIt >::difference_type count_if (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _Pr >
pair< _InIt1, _InIt2 > _Mismatch (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _Pr >
pair< _InIt1, _InIt2 > mismatch (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 >
pair< _InIt1, _InIt2 > mismatch (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)
 
template<class _InIt , class _Pr >
bool _All_of (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
bool all_of (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
bool _Any_of (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
bool any_of (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
bool _None_of (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
bool none_of (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
_InIt _Find_if_not (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
_InIt find_if_not (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _OutIt , class _Pr >
_OutIt _Copy_if (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt , class _OutIt , class _Pr >
_OutIt copy_if (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt , class _OutIt1 , class _OutIt2 , class _Pr >
pair< _OutIt1, _OutIt2 > _Partition_copy (_InIt _First, _InIt _Last, _OutIt1 _Dest1, _OutIt2 _Dest2, _Pr _Pred)
 
template<class _InIt , class _OutIt1 , class _OutIt2 , class _Pr >
pair< _OutIt1, _OutIt2 > partition_copy (_InIt _First, _InIt _Last, _OutIt1 _Dest1, _OutIt2 _Dest2, _Pr _Pred)
 
template<class _InIt , class _Pr >
bool _Is_partitioned (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
bool is_partitioned (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Diff , class _Pr >
_FwdIt _Partition_point (_FwdIt _First, _FwdIt _Last, _Pr _Pred, _Diff *)
 
template<class _FwdIt , class _Pr >
_FwdIt partition_point (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 , class _Diff1 , class _Diff2 , class _Pr >
_FwdIt1 _Search (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred, _Diff1 *, _Diff2 *)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 search (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 search (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2)
 
template<class _FwdIt1 , class _Diff2 , class _Ty , class _Pr >
_FwdIt1 _Search_n (_FwdIt1 _First1, _FwdIt1 _Last1, _Diff2 _Count, const _Ty &_Val, _Pr _Pred, forward_iterator_tag)
 
template<class _FwdIt1 , class _Diff2 , class _Ty , class _Pr >
_FwdIt1 _Search_n (_FwdIt1 _First1, _FwdIt1 _Last1, _Diff2 _Count, const _Ty &_Val, _Pr _Pred, random_access_iterator_tag)
 
template<class _FwdIt1 , class _Diff2 , class _Ty , class _Pr >
_FwdIt1 search_n (_FwdIt1 _First1, _FwdIt1 _Last1, _Diff2 _Count, const _Ty &_Val, _Pr _Pred)
 
template<class _FwdIt1 , class _Diff2 , class _Ty >
_FwdIt1 search_n (_FwdIt1 _First1, _FwdIt1 _Last1, _Diff2 _Count, const _Ty &_Val)
 
template<class _FwdIt1 , class _FwdIt2 , class _Diff1 , class _Diff2 , class _Pr >
_FwdIt1 _Find_end (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred, _Diff1 *, _Diff2 *)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 find_end (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 find_end (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 _Find_first_of (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 find_first_of (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 find_first_of (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt2 _Swap_ranges (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _Dest)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt2 swap_ranges (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _Dest)
 
template<class _InIt , class _OutIt , class _Fn1 >
_OutIt _Transform (_InIt _First, _InIt _Last, _OutIt _Dest, _Fn1 _Func)
 
template<class _InIt , class _OutIt , class _Fn1 >
_OutIt transform (_InIt _First, _InIt _Last, _OutIt _Dest, _Fn1 _Func)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Fn2 >
_OutIt _Transform (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _OutIt _Dest, _Fn2 _Func)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Fn2 >
_OutIt transform (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _OutIt _Dest, _Fn2 _Func)
 
template<class _FwdIt , class _Ty >
void _Replace (_FwdIt _First, _FwdIt _Last, const _Ty &_Oldval, const _Ty &_Newval)
 
template<class _FwdIt , class _Ty >
void replace (_FwdIt _First, _FwdIt _Last, const _Ty &_Oldval, const _Ty &_Newval)
 
template<class _FwdIt , class _Pr , class _Ty >
void _Replace_if (_FwdIt _First, _FwdIt _Last, _Pr _Pred, const _Ty &_Val)
 
template<class _FwdIt , class _Pr , class _Ty >
void replace_if (_FwdIt _First, _FwdIt _Last, _Pr _Pred, const _Ty &_Val)
 
template<class _InIt , class _OutIt , class _Ty >
_OutIt _Replace_copy (_InIt _First, _InIt _Last, _OutIt _Dest, const _Ty &_Oldval, const _Ty &_Newval)
 
template<class _InIt , class _OutIt , class _Ty >
_OutIt replace_copy (_InIt _First, _InIt _Last, _OutIt _Dest, const _Ty &_Oldval, const _Ty &_Newval)
 
template<class _InIt , class _OutIt , class _Pr , class _Ty >
_OutIt _Replace_copy_if (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred, const _Ty &_Val)
 
template<class _InIt , class _OutIt , class _Pr , class _Ty >
_OutIt replace_copy_if (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred, const _Ty &_Val)
 
template<class _FwdIt , class _Fn0 >
void _Generate (_FwdIt _First, _FwdIt _Last, _Fn0 _Func)
 
template<class _FwdIt , class _Fn0 >
void generate (_FwdIt _First, _FwdIt _Last, _Fn0 _Func)
 
template<class _OutIt , class _Diff , class _Fn0 >
_OutIt _Generate_n (_OutIt _Dest, _Diff _Count, _Fn0 _Func)
 
template<class _OutIt , class _Diff , class _Fn0 >
_OutIt generate_n (_OutIt _Dest, _Diff _Count, _Fn0 _Func)
 
template<class _InIt , class _OutIt , class _Ty >
_OutIt _Remove_copy (_InIt _First, _InIt _Last, _OutIt _Dest, const _Ty &_Val)
 
template<class _InIt , class _OutIt , class _Ty >
_OutIt remove_copy (_InIt _First, _InIt _Last, _OutIt _Dest, const _Ty &_Val)
 
template<class _InIt , class _OutIt , class _Pr >
_OutIt _Remove_copy_if (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt , class _OutIt , class _Pr >
_OutIt remove_copy_if (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred)
 
template<class _FwdIt , class _Ty >
_FwdIt _Remove (_FwdIt _First, _FwdIt _Last, const _Ty &_Val)
 
template<class _FwdIt , class _Ty >
_FwdIt remove (_FwdIt _First, _FwdIt _Last, const _Ty &_Val)
 
template<class _FwdIt , class _Pr >
_FwdIt _Remove_if (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt remove_if (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt _Unique (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt unique (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt >
_FwdIt unique (_FwdIt _First, _FwdIt _Last)
 
template<class _InIt , class _OutIt , class _Ty , class _Pr >
_OutIt _Unique_copy (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred, _Ty *)
 
template<class _InIt , class _OutIt , class _Pr >
_OutIt _Unique_copy (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred, input_iterator_tag)
 
template<class _FwdIt , class _OutIt , class _Pr >
_OutIt _Unique_copy (_FwdIt _First, _FwdIt _Last, _OutIt _Dest, _Pr _Pred, forward_iterator_tag)
 
template<class _InIt , class _OutIt , class _Pr >
_OutIt unique_copy (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt , class _OutIt >
_OutIt unique_copy (_InIt _First, _InIt _Last, _OutIt _Dest)
 
template<class _BidIt , class _OutIt >
_OutIt _Reverse_copy (_BidIt _First, _BidIt _Last, _OutIt _Dest)
 
template<class _BidIt , class _OutIt >
_OutIt reverse_copy (_BidIt _First, _BidIt _Last, _OutIt _Dest)
 
template<class _FwdIt , class _OutIt >
_OutIt rotate_copy (_FwdIt _First, _FwdIt _Mid, _FwdIt _Last, _OutIt _Dest)
 
template<class _RanIt , class _Fn1 , class _Diff >
void _Random_shuffle (_RanIt _First, _RanIt _Last, _Fn1 &_Func, _Diff *)
 
template<class _RanIt , class _Fn1 >
void random_shuffle (_RanIt _First, _RanIt _Last, _Fn1 &&_Func)
 
template<class _RanIt , class _Urng >
void shuffle (_RanIt _First, _RanIt _Last, _Urng &&_Func)
 
template<class _RanIt >
void random_shuffle (_RanIt _First, _RanIt _Last)
 
template<class _FwdIt , class _Pr >
_FwdIt _Partition (_FwdIt _First, _FwdIt _Last, _Pr _Pred, forward_iterator_tag)
 
template<class _BidIt , class _Pr >
_BidIt _Partition (_BidIt _First, _BidIt _Last, _Pr _Pred, bidirectional_iterator_tag)
 
template<class _FwdIt , class _Pr >
_FwdIt partition (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _BidIt , class _Diff , class _Ty >
_BidIt _Buffered_rotate (_BidIt _First, _BidIt _Mid, _BidIt _Last, _Diff _Count1, _Diff _Count2, _Temp_iterator< _Ty > &_Tempbuf)
 
template<class _BidIt , class _Pr , class _Diff , class _Ty >
_BidIt _Stable_partition (_BidIt _First, _BidIt _Last, _Pr _Pred, _Diff _Count, _Temp_iterator< _Ty > &_Tempbuf)
 
template<class _BidIt , class _Pr , class _Diff , class _Ty >
_BidIt _Stable_partition (_BidIt _First, _BidIt _Last, _Pr _Pred, _Diff *, _Ty *)
 
template<class _BidIt , class _Pr >
_BidIt stable_partition (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void _Push_heap (_RanIt _First, _Diff _Hole, _Diff _Top, _Ty &&_Val, _Pr _Pred)
 
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void _Push_heap_0 (_RanIt _First, _RanIt _Last, _Pr _Pred, _Diff *, _Ty *)
 
template<class _RanIt , class _Pr >
void push_heap (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt >
void push_heap (_RanIt _First, _RanIt _Last)
 
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void _Adjust_heap (_RanIt _First, _Diff _Hole, _Diff _Bottom, _Ty &&_Val, _Pr _Pred)
 
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void _Pop_heap (_RanIt _First, _RanIt _Last, _RanIt _Dest, _Ty &&_Val, _Pr _Pred, _Diff *)
 
template<class _RanIt , class _Ty , class _Pr >
void _Pop_heap_0 (_RanIt _First, _RanIt _Last, _Pr _Pred, _Ty *)
 
template<class _RanIt , class _Pr >
void _Pop_heap (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void pop_heap (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt >
void pop_heap (_RanIt _First, _RanIt _Last)
 
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void _Make_heap (_RanIt _First, _RanIt _Last, _Pr _Pred, _Diff *, _Ty *)
 
template<class _RanIt , class _Pr >
void make_heap (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt >
void make_heap (_RanIt _First, _RanIt _Last)
 
template<class _RanIt , class _Pr >
void _Sort_heap (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void sort_heap (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt >
void sort_heap (_RanIt _First, _RanIt _Last)
 
template<class _FwdIt , class _Ty , class _Diff , class _Pr >
_FwdIt _Lower_bound (_FwdIt _First, _FwdIt _Last, const _Ty &_Val, _Pr _Pred, _Diff *)
 
template<class _FwdIt , class _Ty , class _Pr >
_FwdIt lower_bound (_FwdIt _First, _FwdIt _Last, const _Ty &_Val, _Pr _Pred)
 
template<class _FwdIt , class _Ty >
_FwdIt lower_bound (_FwdIt _First, _FwdIt _Last, const _Ty &_Val)
 
template<class _FwdIt , class _Ty , class _Diff , class _Pr >
_FwdIt _Upper_bound (_FwdIt _First, _FwdIt _Last, const _Ty &_Val, _Pr _Pred, _Diff *)
 
template<class _FwdIt , class _Ty , class _Pr >
_FwdIt upper_bound (_FwdIt _First, _FwdIt _Last, const _Ty &_Val, _Pr _Pred)
 
template<class _FwdIt , class _Ty >
_FwdIt upper_bound (_FwdIt _First, _FwdIt _Last, const _Ty &_Val)
 
template<class _FwdIt , class _Ty , class _Diff , class _Pr >
pair< _FwdIt, _FwdIt > _Equal_range (_FwdIt _First, _FwdIt _Last, const _Ty &_Val, _Pr _Pred, _Diff *)
 
template<class _FwdIt , class _Ty , class _Pr >
pair< _FwdIt, _FwdIt > equal_range (_FwdIt _First, _FwdIt _Last, const _Ty &_Val, _Pr _Pred)
 
template<class _FwdIt , class _Ty >
pair< _FwdIt, _FwdIt > equal_range (_FwdIt _First, _FwdIt _Last, const _Ty &_Val)
 
template<class _FwdIt , class _Ty , class _Pr >
bool binary_search (_FwdIt _First, _FwdIt _Last, const _Ty &_Val, _Pr _Pred)
 
template<class _FwdIt , class _Ty >
bool binary_search (_FwdIt _First, _FwdIt _Last, const _Ty &_Val)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Merge0 (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt merge (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt merge (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _BidIt1 , class _BidIt2 , class _BidIt3 , class _Pr >
_BidIt3 _Merge_backward (_BidIt1 _First1, _BidIt1 _Last1, _BidIt2 _First2, _BidIt2 _Last2, _BidIt3 _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Merge (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void _Buffered_merge (_BidIt _First, _BidIt _Mid, _BidIt _Last, _Diff _Count1, _Diff _Count2, _Temp_iterator< _Ty > &_Tempbuf, _Pr _Pred)
 
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void _Inplace_merge (_BidIt _First, _BidIt _Mid, _BidIt _Last, _Pr _Pred, _Diff *, _Ty *)
 
template<class _BidIt , class _Pr >
void inplace_merge (_BidIt _First, _BidIt _Mid, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt >
void inplace_merge (_BidIt _First, _BidIt _Mid, _BidIt _Last)
 
template<class _BidIt , class _Pr , class _Ty >
void _Insertion_sort1 (_BidIt _First, _BidIt _Last, _Pr _Pred, _Ty *)
 
template<class _BidIt , class _Pr >
void _Insertion_sort (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void _Med3 (_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void _Median (_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
pair< _RanIt, _RanIt > _Unguarded_partition (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Diff , class _Pr >
void _Sort (_RanIt _First, _RanIt _Last, _Diff _Ideal, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void sort (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt >
void sort (_RanIt _First, _RanIt _Last)
 
template<class _BidIt , class _OutIt , class _Diff , class _Pr >
void _Chunked_merge (_BidIt _First, _BidIt _Last, _OutIt _Dest, _Diff _Chunk, _Diff _Count, _Pr _Pred)
 
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void _Buffered_merge_sort (_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > &_Tempbuf, _Pr _Pred)
 
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void _Stable_sort (_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > &_Tempbuf, _Pr _Pred)
 
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void _Stable_sort (_BidIt _First, _BidIt _Last, _Diff *, _Ty *, _Pr _Pred)
 
template<class _BidIt , class _Pr >
void stable_sort (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt >
void stable_sort (_BidIt _First, _BidIt _Last)
 
template<class _RanIt , class _Ty , class _Pr >
void _Partial_sort (_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred, _Ty *)
 
template<class _RanIt , class _Pr >
void partial_sort (_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt >
void partial_sort (_RanIt _First, _RanIt _Mid, _RanIt _Last)
 
template<class _InIt , class _RanIt , class _Diff , class _Ty , class _Pr >
_RanIt _Partial_sort_copy (_InIt _First1, _InIt _Last1, _RanIt _First2, _RanIt _Last2, _Pr _Pred, _Diff *, _Ty *)
 
template<class _InIt , class _RanIt , class _Pr >
_RanIt partial_sort_copy (_InIt _First1, _InIt _Last1, _RanIt _First2, _RanIt _Last2, _Pr _Pred)
 
template<class _InIt , class _RanIt >
_RanIt partial_sort_copy (_InIt _First1, _InIt _Last1, _RanIt _First2, _RanIt _Last2)
 
template<class _RanIt , class _Pr >
void _Nth_element (_RanIt _First, _RanIt _Nth, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void nth_element (_RanIt _First, _RanIt _Nth, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt >
void nth_element (_RanIt _First, _RanIt _Nth, _RanIt _Last)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Includes (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool includes (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 >
bool includes (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Set_union (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt set_union (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt set_union (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Set_intersection (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt set_intersection (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt set_intersection (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Set_difference (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt set_difference (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt set_difference (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Set_symmetric_difference (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt set_symmetric_difference (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt set_symmetric_difference (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _FwdIt , class _Pr >
_FwdIt _Max_element (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt max_element (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt >
_FwdIt max_element (_FwdIt _First, _FwdIt _Last)
 
template<class _FwdIt , class _Pr >
_FwdIt _Min_element (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt min_element (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt >
_FwdIt min_element (_FwdIt _First, _FwdIt _Last)
 
template<class _FwdIt , class _Pr >
pair< _FwdIt, _FwdIt > _Minmax_element (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
pair< _FwdIt, _FwdIt > minmax_element (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt >
pair< _FwdIt, _FwdIt > minmax_element (_FwdIt _First, _FwdIt _Last)
 
template<class _Ty >
 _Post_equal_to_ (_Left< _Right?_Right:_Left) const _Ty &(max)(const _Ty &_Left
 
template<class _Ty >
_Ty() max (_XSTD initializer_list< _Ty > _Ilist)
 
template<class _Ty , class _Pr >
const _Ty &() max (const _Ty &_Left, const _Ty &_Right, _Pr _Pred)
 
template<class _Ty , class _Pr >
_Ty() max (_XSTD initializer_list< _Ty > _Ilist, _Pr _Pred)
 
template<class _Ty >
 _Post_equal_to_ (_Right< _Left?_Right:_Left) const _Ty &(min)(const _Ty &_Left
 
template<class _Ty >
_Ty() min (_XSTD initializer_list< _Ty > _Ilist)
 
template<class _Ty , class _Pr >
const _Ty &() min (const _Ty &_Left, const _Ty &_Right, _Pr _Pred)
 
template<class _Ty , class _Pr >
_Ty() min (_XSTD initializer_list< _Ty > _Ilist, _Pr _Pred)
 
template<class _Ty >
pair< const _Ty &, const _Ty & > minmax (const _Ty &_Left, const _Ty &_Right)
 
template<class _Ty >
pair< _Ty, _Ty > minmax (_XSTD initializer_list< _Ty > _Ilist)
 
template<class _Ty , class _Pr >
pair< const _Ty &, const _Ty & > minmax (const _Ty &_Left, const _Ty &_Right, _Pr _Pred)
 
template<class _Ty , class _Pr >
pair< _Ty, _Ty > minmax (_XSTD initializer_list< _Ty > _Ilist, _Pr _Pred)
 
template<class _BidIt , class _Pr >
bool _Next_permutation (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt , class _Pr >
bool next_permutation (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt >
bool next_permutation (_BidIt _First, _BidIt _Last)
 
template<class _BidIt , class _Pr >
bool _Prev_permutation (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt , class _Pr >
bool prev_permutation (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt >
bool prev_permutation (_BidIt _First, _BidIt _Last)
 
template<class _RanIt , class _Diff , class _Pr >
_RanIt _Is_heap_until (_RanIt _First, _RanIt _Last, _Pr _Pred, _Diff *)
 
template<class _RanIt , class _Pr >
_RanIt is_heap_until (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
bool is_heap (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt >
_RanIt is_heap_until (_RanIt _First, _RanIt _Last)
 
template<class _RanIt >
bool is_heap (_RanIt _First, _RanIt _Last)
 
template<class _FwdIt , class _Pr >
_FwdIt _Is_sorted_until (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt is_sorted_until (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
bool is_sorted (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt >
_FwdIt is_sorted_until (_FwdIt _First, _FwdIt _Last)
 
template<class _FwdIt >
bool is_sorted (_FwdIt _First, _FwdIt _Last)
 
template<class _InIt , class _Fn1 >
_Fn1 cliext::for_each_unchecked (_InIt _First, _InIt _Last, _Fn1 _Func)
 
template<class _InIt , class _Fn1 >
_Fn1 cliext::for_each (_InIt _First, _InIt _Last, _Fn1 _Func)
 
template<class _InIt , class _Ty >
_InIt cliext::find_unchecked (_InIt _First, _InIt _Last, const _Ty%_Val)
 
template<class _InIt , class _Ty >
_InIt cliext::find (_InIt _First, _InIt _Last, const _Ty%_Val)
 
const char * cliext::find (const char *_First, const char *_Last, int _Val)
 
const signed char * cliext::find (const signed char *_First, const signed char *_Last, int _Val)
 
const unsigned char * cliext::find (const unsigned char *_First, const unsigned char *_Last, int _Val)
 
template<class _InIt , class _Pr >
_InIt cliext::find_if_unchecked (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
_InIt cliext::find_if (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _FwdIt >
_FwdIt cliext::adjacent_find_unchecked (_FwdIt _First, _FwdIt _Last)
 
template<class _FwdIt >
_FwdIt cliext::adjacent_find (_FwdIt _First, _FwdIt _Last)
 
template<class _FwdIt , class _Pr >
_FwdIt cliext::adjacent_find_unchecked (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt cliext::adjacent_find (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _InIt , class _Ty >
iterator_traits< _InIt >::difference_type cliext::count_unchecked (_InIt _First, _InIt _Last, const _Ty%_Val)
 
template<class _InIt , class _Ty >
iterator_traits< _InIt >::difference_type cliext::count (_InIt _First, _InIt _Last, const _Ty%_Val)
 
template<class _InIt , class _Pr >
iterator_traits< _InIt >::difference_type cliext::count_if_unchecked (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _InIt , class _Pr >
iterator_traits< _InIt >::difference_type cliext::count_if (_InIt _First, _InIt _Last, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 cliext::search_unchecked (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 cliext::search (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 cliext::search_unchecked (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 cliext::search (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred)
 
template<class _FwdIt1 , class _Diff2 , class _Ty >
_FwdIt1 cliext::_Search_n (_FwdIt1 _First1, _FwdIt1 _Last1, _Diff2 _Count, const _Ty%_Val, forward_iterator_tag)
 
template<class _FwdIt1 , class _Diff2 , class _Ty >
_FwdIt1 cliext::_Search_n (_FwdIt1 _First1, _FwdIt1 _Last1, _Diff2 _Count, const _Ty%_Val, random_access_iterator_tag)
 
template<class _FwdIt1 , class _Diff2 , class _Ty >
_FwdIt1 cliext::search_n (_FwdIt1 _First1, _FwdIt1 _Last1, _Diff2 _Count, const _Ty%_Val)
 
template<class _FwdIt1 , class _Diff2 , class _Ty , class _Pr >
_FwdIt1 cliext::_Search_n (_FwdIt1 _First1, _FwdIt1 _Last1, _Diff2 _Count, const _Ty%_Val, _Pr _Pred, forward_iterator_tag)
 
template<class _FwdIt1 , class _Diff2 , class _Ty , class _Pr >
_FwdIt1 cliext::_Search_n (_FwdIt1 _First1, _FwdIt1 _Last1, _Diff2 _Count, const _Ty%_Val, _Pr _Pred, random_access_iterator_tag)
 
template<class _FwdIt1 , class _Diff2 , class _Ty , class _Pr >
_FwdIt1 cliext::search_n (_FwdIt1 _First1, _FwdIt1 _Last1, _Diff2 _Count, const _Ty%_Val, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 cliext::find_end_unchecked (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 cliext::find_end (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 cliext::find_end_unchecked (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 cliext::find_end (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 cliext::find_first_of_unchecked (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 cliext::find_first_of (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 cliext::find_first_of_unchecked (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 cliext::find_first_of (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2, _Pr _Pred)
 
template<class _FwdIt1 , class _FwdIt2 >
void cliext::iter_swap (_FwdIt1 _Left, _FwdIt2 _Right)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt2 cliext::swap_ranges_unchecked (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2)
 
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt2 cliext::swap_ranges (_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2)
 
template<class _InIt , class _OutIt , class _Fn1 >
_OutIt cliext::transform_unchecked (_InIt _First, _InIt _Last, _OutIt _Dest, _Fn1 _Func)
 
template<class _InIt , class _OutIt , class _Fn1 >
_OutIt cliext::transform (_InIt _First, _InIt _Last, _OutIt _Dest, _Fn1 _Func)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Fn2 >
_OutIt cliext::transform_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _OutIt _Dest, _Fn2 _Func)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Fn2 >
_OutIt cliext::transform (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _OutIt _Dest, _Fn2 _Func)
 
template<class _FwdIt , class _Ty >
void cliext::replace_unchecked (_FwdIt _First, _FwdIt _Last, const _Ty%_Oldval, const _Ty%_Newval)
 
template<class _FwdIt , class _Ty >
void cliext::replace (_FwdIt _First, _FwdIt _Last, const _Ty%_Oldval, const _Ty%_Newval)
 
template<class _FwdIt , class _Pr , class _Ty >
void cliext::replace_if_unchecked (_FwdIt _First, _FwdIt _Last, _Pr _Pred, const _Ty%_Val)
 
template<class _FwdIt , class _Pr , class _Ty >
void cliext::replace_if (_FwdIt _First, _FwdIt _Last, _Pr _Pred, const _Ty%_Val)
 
template<class _InIt , class _OutIt , class _Ty >
_OutIt cliext::replace_copy_unchecked (_InIt _First, _InIt _Last, _OutIt _Dest, const _Ty%_Oldval, const _Ty%_Newval)
 
template<class _InIt , class _OutIt , class _Ty >
_OutIt cliext::replace_copy (_InIt _First, _InIt _Last, _OutIt _Dest, const _Ty%_Oldval, const _Ty%_Newval)
 
template<class _InIt , class _OutIt , class _Pr , class _Ty >
_OutIt cliext::replace_copy_if_unchecked (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred, const _Ty%_Val)
 
template<class _InIt , class _OutIt , class _Pr , class _Ty >
_OutIt cliext::replace_copy_if (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred, const _Ty%_Val)
 
template<class _FwdIt , class _Fn0 >
void cliext::generate_unchecked (_FwdIt _First, _FwdIt _Last, _Fn0 _Func)
 
template<class _FwdIt , class _Fn0 >
void cliext::generate (_FwdIt _First, _FwdIt _Last, _Fn0 _Func)
 
template<class _OutIt , class _Diff , class _Fn0 >
void cliext::generate_n_unchecked (_OutIt _Dest, _Diff _Count, _Fn0 _Func)
 
template<class _OutIt , class _Diff , class _Fn0 >
void cliext::generate_n (_OutIt _Dest, _Diff _Count, _Fn0 _Func)
 
template<class _InIt , class _OutIt , class _Ty >
_OutIt cliext::remove_copy_unchecked (_InIt _First, _InIt _Last, _OutIt _Dest, const _Ty%_Val)
 
template<class _InIt , class _OutIt , class _Ty >
_OutIt cliext::remove_copy (_InIt _First, _InIt _Last, _OutIt _Dest, const _Ty%_Val)
 
template<class _InIt , class _OutIt , class _Pr >
_OutIt cliext::remove_copy_if_unchecked (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt , class _OutIt , class _Pr >
_OutIt cliext::remove_copy_if (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred)
 
template<class _FwdIt , class _Ty >
_FwdIt cliext::remove_unchecked (_FwdIt _First, _FwdIt _Last, const _Ty%_Val)
 
template<class _FwdIt , class _Ty >
_FwdIt cliext::remove (_FwdIt _First, _FwdIt _Last, const _Ty%_Val)
 
template<class _FwdIt , class _Pr >
_FwdIt cliext::remove_if_unchecked (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt cliext::remove_if (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt >
_FwdIt cliext::unique_unchecked (_FwdIt _First, _FwdIt _Last)
 
template<class _FwdIt >
_FwdIt cliext::unique (_FwdIt _First, _FwdIt _Last)
 
template<class _FwdIt , class _Pr >
_FwdIt cliext::unique_unchecked (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt cliext::unique (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _InIt , class _OutIt >
_OutIt cliext::_Unique_copy (_InIt _First, _InIt _Last, _OutIt _Dest, input_iterator_tag)
 
template<class _FwdIt , class _OutIt >
_OutIt cliext::_Unique_copy (_FwdIt _First, _FwdIt _Last, _OutIt _Dest, forward_iterator_tag)
 
template<class _BidIt , class _OutIt >
_OutIt cliext::_Unique_copy (_BidIt _First, _BidIt _Last, _OutIt _Dest, bidirectional_iterator_tag)
 
template<class _RanIt , class _OutIt >
_OutIt cliext::_Unique_copy (_RanIt _First, _RanIt _Last, _OutIt _Dest, random_access_iterator_tag)
 
template<class _InIt , class _OutIt >
_OutIt cliext::unique_copy_unchecked (_InIt _First, _InIt _Last, _OutIt _Dest)
 
template<class _InIt , class _OutIt >
_OutIt cliext::unique_copy (_InIt _First, _InIt _Last, _OutIt _Dest)
 
template<class _InIt , class _OutIt , class _Pr >
_OutIt cliext::_Unique_copy (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred, input_iterator_tag)
 
template<class _FwdIt , class _OutIt , class _Pr >
_OutIt cliext::_Unique_copy (_FwdIt _First, _FwdIt _Last, _OutIt _Dest, _Pr _Pred, forward_iterator_tag)
 
template<class _BidIt , class _OutIt , class _Pr >
_OutIt cliext::_Unique_copy (_BidIt _First, _BidIt _Last, _OutIt _Dest, _Pr _Pred, bidirectional_iterator_tag)
 
template<class _RanIt , class _OutIt , class _Pr >
_OutIt cliext::_Unique_copy (_RanIt _First, _RanIt _Last, _OutIt _Dest, _Pr _Pred, random_access_iterator_tag)
 
template<class _InIt , class _OutIt , class _Pr >
_OutIt cliext::unique_copy_unchecked (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt , class _OutIt , class _Pr >
_OutIt cliext::unique_copy (_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred)
 
template<class _BidIt >
void cliext::_Reverse (_BidIt _First, _BidIt _Last, bidirectional_iterator_tag)
 
template<class _RanIt >
void cliext::_Reverse (_RanIt _First, _RanIt _Last, random_access_iterator_tag)
 
template<class _BidIt >
void cliext::reverse_unchecked (_BidIt _First, _BidIt _Last)
 
template<class _BidIt >
void cliext::reverse (_BidIt _First, _BidIt _Last)
 
template<class _BidIt , class _OutIt >
_OutIt cliext::reverse_copy_unchecked (_BidIt _First, _BidIt _Last, _OutIt _Dest)
 
template<class _BidIt , class _OutIt >
_OutIt cliext::reverse_copy (_BidIt _First, _BidIt _Last, _OutIt _Dest)
 
template<class _FwdIt >
void cliext::_Rotate (_FwdIt _First, _FwdIt _Mid, _FwdIt _Last, forward_iterator_tag)
 
template<class _BidIt >
void cliext::_Rotate (_BidIt _First, _BidIt _Mid, _BidIt _Last, bidirectional_iterator_tag)
 
template<class _RanIt >
void cliext::_Rotate (_RanIt _First, _RanIt _Mid, _RanIt _Last, random_access_iterator_tag)
 
template<class _FwdIt >
void cliext::rotate_unchecked (_FwdIt _First, _FwdIt _Mid, _FwdIt _Last)
 
template<class _FwdIt >
void cliext::rotate (_FwdIt _First, _FwdIt _Mid, _FwdIt _Last)
 
template<class _FwdIt , class _OutIt >
_OutIt cliext::rotate_copy_unchecked (_FwdIt _First, _FwdIt _Mid, _FwdIt _Last, _OutIt _Dest)
 
template<class _FwdIt , class _OutIt >
_OutIt cliext::rotate_copy (_FwdIt _First, _FwdIt _Mid, _FwdIt _Last, _OutIt _Dest)
 
int cliext::_Rand (void)
 
template<class _RanIt >
void cliext::random_shuffle_unchecked (_RanIt _First, _RanIt _Last)
 
template<class _RanIt >
void cliext::random_shuffle (_RanIt _First, _RanIt _Last)
 
template<class _RanIt , class _Fn1 >
void cliext::random_shuffle_unchecked (_RanIt _First, _RanIt _Last, _Fn1%_Func)
 
template<class _RanIt , class _Fn1 >
void cliext::random_shuffle (_RanIt _First, _RanIt _Last, _Fn1%_Func)
 
template<class _BidIt , class _Pr >
_BidIt cliext::partition_unchecked (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt , class _Pr >
_BidIt cliext::partition (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt , class _Pr , class _Diff , class _Ty >
_BidIt cliext::_XStable_partition (_BidIt _First, _BidIt _Last, _Pr _Pred, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf)
 
template<class _BidIt , class _Pr >
_BidIt cliext::stable_partition_unchecked (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt , class _Pr >
_BidIt cliext::stable_partition (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Diff , class _Ty >
void cliext::_XPush_heap (_RanIt _First, _Diff _Hole, _Diff _Top, _Ty _Val)
 
template<class _RanIt >
void cliext::push_heap_unchecked (_RanIt _First, _RanIt _Last)
 
template<class _RanIt >
void cliext::push_heap (_RanIt _First, _RanIt _Last)
 
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void cliext::_XPush_heap (_RanIt _First, _Diff _Hole, _Diff _Top, _Ty _Val, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::push_heap_unchecked (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::push_heap (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Diff , class _Ty >
void cliext::_XAdjust_heap (_RanIt _First, _Diff _Hole, _Diff _Bottom, _Ty _Val)
 
template<class _RanIt , class _Ty >
void cliext::_XPop_heap (_RanIt _First, _RanIt _Last, _RanIt _Dest, _Ty _Val)
 
template<class _RanIt >
void cliext::pop_heap_unchecked (_RanIt _First, _RanIt _Last)
 
template<class _RanIt >
void cliext::pop_heap (_RanIt _First, _RanIt _Last)
 
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void cliext::_XAdjust_heap (_RanIt _First, _Diff _Hole, _Diff _Bottom, _Ty _Val, _Pr _Pred)
 
template<class _RanIt , class _Ty , class _Pr >
void cliext::_XPop_heap (_RanIt _First, _RanIt _Last, _RanIt _Dest, _Ty _Val, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::pop_heap_unchecked (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::pop_heap (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt >
void cliext::make_heap_unchecked (_RanIt _First, _RanIt _Last)
 
template<class _RanIt >
void cliext::make_heap (_RanIt _First, _RanIt _Last)
 
template<class _RanIt , class _Pr >
void cliext::make_heap_unchecked (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::make_heap (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt >
void cliext::sort_heap_unchecked (_RanIt _First, _RanIt _Last)
 
template<class _RanIt >
void cliext::sort_heap (_RanIt _First, _RanIt _Last)
 
template<class _RanIt , class _Pr >
void cliext::sort_heap_unchecked (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::sort_heap (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Ty >
_FwdIt cliext::lower_bound_unchecked (_FwdIt _First, _FwdIt _Last, _Ty%_Val)
 
template<class _FwdIt , class _Ty >
_FwdIt cliext::lower_bound (_FwdIt _First, _FwdIt _Last, _Ty%_Val)
 
template<class _FwdIt , class _Ty , class _Pr >
_FwdIt cliext::lower_bound_unchecked (_FwdIt _First, _FwdIt _Last, const _Ty%_Val, _Pr _Pred)
 
template<class _FwdIt , class _Ty , class _Pr >
_FwdIt cliext::lower_bound (_FwdIt _First, _FwdIt _Last, const _Ty%_Val, _Pr _Pred)
 
template<class _FwdIt , class _Ty >
_FwdIt cliext::upper_bound_unchecked (_FwdIt _First, _FwdIt _Last, const _Ty%_Val)
 
template<class _FwdIt , class _Ty >
_FwdIt cliext::upper_bound (_FwdIt _First, _FwdIt _Last, const _Ty%_Val)
 
template<class _FwdIt , class _Ty , class _Pr >
_FwdIt cliext::upper_bound_unchecked (_FwdIt _First, _FwdIt _Last, const _Ty%_Val, _Pr _Pred)
 
template<class _FwdIt , class _Ty , class _Pr >
_FwdIt cliext::upper_bound (_FwdIt _First, _FwdIt _Last, const _Ty%_Val, _Pr _Pred)
 
template<class _FwdIt , class _Ty >
 cliext::_PAIR_TYPE (_FwdIt) equal_range_unchecked(_FwdIt _First
 
 cliext::_Iter_distance (_First, _Last, _Count)
 
 cliext::for (;0< _Count;)
 
 cliext::return (_PAIR_TYPE(_FwdIt)(_First, _First))
 
 cliext::return (cliext::equal_range_unchecked(_Unchecked(_First), _Unchecked(_Last), _Val))
 
template<class _FwdIt , class _Ty , class _Pr >
 cliext::_PAIR_TYPE (_FwdIt) equal_range_unchecked(_FwdIt _First
 
 cliext::return (cliext::equal_range_unchecked(_Unchecked(_First), _Unchecked(_Last), _Val, _Pred))
 
template<class _FwdIt , class _Ty >
bool cliext::binary_search_unchecked (_FwdIt _First, _FwdIt _Last, const _Ty%_Val)
 
template<class _FwdIt , class _Ty >
bool cliext::binary_search (_FwdIt _First, _FwdIt _Last, const _Ty%_Val)
 
template<class _FwdIt , class _Ty , class _Pr >
bool cliext::binary_search_unchecked (_FwdIt _First, _FwdIt _Last, const _Ty%_Val, _Pr _Pred)
 
template<class _FwdIt , class _Ty , class _Pr >
bool cliext::binary_search (_FwdIt _First, _FwdIt _Last, const _Ty%_Val, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt cliext::merge_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt cliext::merge (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt cliext::merge_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt cliext::merge (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _BidIt , class _Diff , class _Ty >
_BidIt cliext::_XBuffered_rotate (_BidIt _First, _BidIt _Mid, _BidIt _Last, _Diff _Count1, _Diff _Count2, _Temp_iterator< _Ty > _Tempbuf)
 
template<class _BidIt1 , class _BidIt2 , class _BidIt3 >
_BidIt3 cliext::_XMerge_backward (_BidIt1 _First1, _BidIt1 _Last1, _BidIt2 _First2, _BidIt2 _Last2, _BidIt3 _Dest)
 
template<class _BidIt , class _Diff , class _Ty >
void cliext::_XBuffered_merge (_BidIt _First, _BidIt _Mid, _BidIt _Last, _Diff _Count1, _Diff _Count2, _Temp_iterator< _Ty > _Tempbuf)
 
template<class _BidIt >
void cliext::inplace_merge_unchecked (_BidIt _First, _BidIt _Mid, _BidIt _Last)
 
template<class _BidIt >
void cliext::inplace_merge (_BidIt _First, _BidIt _Mid, _BidIt _Last)
 
template<class _BidIt1 , class _BidIt2 , class _BidIt3 , class _Pr >
_BidIt3 cliext::_XMerge_backward (_BidIt1 _First1, _BidIt1 _Last1, _BidIt2 _First2, _BidIt2 _Last2, _BidIt3 _Dest, _Pr _Pred)
 
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void cliext::_XBuffered_merge (_BidIt _First, _BidIt _Mid, _BidIt _Last, _Diff _Count1, _Diff _Count2, _Temp_iterator< _Ty > _Tempbuf, _Pr _Pred)
 
template<class _BidIt , class _Pr >
void cliext::inplace_merge_unchecked (_BidIt _First, _BidIt _Mid, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt , class _Pr >
void cliext::inplace_merge (_BidIt _First, _BidIt _Mid, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt >
void cliext::_XInsertion_sort (_BidIt _First, _BidIt _Last)
 
template<class _RanIt >
void cliext::_XMed3 (_RanIt _First, _RanIt _Mid, _RanIt _Last)
 
template<class _RanIt >
void cliext::_XMedian (_RanIt _First, _RanIt _Mid, _RanIt _Last)
 
template<class _RanIt >
 cliext::_PAIR_TYPE (_RanIt) _XUnguarded_partition(_RanIt _First
 
 cliext::while (_First< _Pfirst &&!_STLCLRDB_LT(*(_Pfirst-1),*_Pfirst)&&!(*_Pfirst< *(_Pfirst-1)))--_Pfirst
 
 cliext::for (;;)
 
template<class _RanIt , class _Diff >
void cliext::_XSort (_RanIt _First, _RanIt _Last, _Diff _Ideal)
 
template<class _RanIt >
void cliext::sort_unchecked (_RanIt _First, _RanIt _Last)
 
template<class _RanIt >
void cliext::sort (_RanIt _First, _RanIt _Last)
 
template<class _BidIt , class _Pr >
void cliext::_XInsertion_sort (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::_XMed3 (_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::_XMedian (_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
 cliext::_PAIR_TYPE (_RanIt) _XUnguarded_partition(_RanIt _First
 
template<class _RanIt , class _Diff , class _Pr >
void cliext::_XSort (_RanIt _First, _RanIt _Last, _Diff _Ideal, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::sort_unchecked (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::sort (_RanIt _First, _RanIt _Last, _Pr _Pred)
 
template<class _BidIt , class _OutIt , class _Diff >
void cliext::_XChunked_merge (_BidIt _First, _BidIt _Last, _OutIt _Dest, _Diff _Chunk, _Diff _Count)
 
template<class _BidIt , class _Diff , class _Ty >
void cliext::_XBuffered_merge_sort (_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf)
 
template<class _BidIt , class _Diff , class _Ty >
void cliext::_XStable_sort (_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf)
 
template<class _BidIt >
void cliext::stable_sort_unchecked (_BidIt _First, _BidIt _Last)
 
template<class _BidIt >
void cliext::stable_sort (_BidIt _First, _BidIt _Last)
 
template<class _BidIt , class _OutIt , class _Diff , class _Pr >
void cliext::_XChunked_merge (_BidIt _First, _BidIt _Last, _OutIt _Dest, _Diff _Chunk, _Diff _Count, _Pr _Pred)
 
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void cliext::_XBuffered_merge_sort (_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf, _Pr _Pred)
 
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void cliext::_XStable_sort (_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf, _Pr _Pred)
 
template<class _BidIt , class _Pr >
void cliext::stable_sort_unchecked (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt , class _Pr >
void cliext::stable_sort (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _RanIt >
void cliext::partial_sort_unchecked (_RanIt _First, _RanIt _Mid, _RanIt _Last)
 
template<class _RanIt >
void cliext::partial_sort (_RanIt _First, _RanIt _Mid, _RanIt _Last)
 
template<class _RanIt , class _Pr >
void cliext::partial_sort_unchecked (_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::partial_sort (_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
 
template<class _InIt , class _RanIt >
_RanIt cliext::partial_sort_copy_unchecked (_InIt _First1, _InIt _Last1, _RanIt _First2, _RanIt _Last2)
 
template<class _InIt , class _RanIt >
_RanIt cliext::partial_sort_copy (_InIt _First1, _InIt _Last1, _RanIt _First2, _RanIt _Last2)
 
template<class _InIt , class _RanIt , class _Pr >
_RanIt cliext::partial_sort_copy_unchecked (_InIt _First1, _InIt _Last1, _RanIt _First2, _RanIt _Last2, _Pr _Pred)
 
template<class _InIt , class _RanIt , class _Pr >
_RanIt cliext::partial_sort_copy (_InIt _First1, _InIt _Last1, _RanIt _First2, _RanIt _Last2, _Pr _Pred)
 
template<class _RanIt >
void cliext::nth_element_unchecked (_RanIt _First, _RanIt _Nth, _RanIt _Last)
 
template<class _RanIt >
void cliext::nth_element (_RanIt _First, _RanIt _Nth, _RanIt _Last)
 
template<class _RanIt , class _Pr >
void cliext::nth_element_unchecked (_RanIt _First, _RanIt _Nth, _RanIt _Last, _Pr _Pred)
 
template<class _RanIt , class _Pr >
void cliext::nth_element (_RanIt _First, _RanIt _Nth, _RanIt _Last, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 >
bool cliext::includes_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2)
 
template<class _InIt1 , class _InIt2 >
bool cliext::includes (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool cliext::includes_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _Pr >
bool cliext::includes (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt cliext::set_union_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt cliext::set_union (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt cliext::set_union_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt cliext::set_union (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt cliext::set_intersection_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt cliext::set_intersection (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt cliext::set_intersection_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt cliext::set_intersection (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt cliext::set_difference_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt cliext::set_difference (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt cliext::set_difference_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt cliext::set_difference (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt cliext::set_symmetric_difference_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt cliext::set_symmetric_difference (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt cliext::set_symmetric_difference_unchecked (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt cliext::set_symmetric_difference (_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
 
template<class _FwdIt >
_FwdIt cliext::max_element_unchecked (_FwdIt _First, _FwdIt _Last)
 
template<class _FwdIt >
_FwdIt cliext::max_element (_FwdIt _First, _FwdIt _Last)
 
template<class _FwdIt , class _Pr >
_FwdIt cliext::max_element_unchecked (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt cliext::max_element (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt >
_FwdIt cliext::min_element_unchecked (_FwdIt _First, _FwdIt _Last)
 
template<class _FwdIt >
_FwdIt cliext::min_element (_FwdIt _First, _FwdIt _Last)
 
template<class _FwdIt , class _Pr >
_FwdIt cliext::min_element_unchecked (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _FwdIt , class _Pr >
_FwdIt cliext::min_element (_FwdIt _First, _FwdIt _Last, _Pr _Pred)
 
template<class _BidIt >
bool cliext::next_permutation_unchecked (_BidIt _First, _BidIt _Last)
 
template<class _BidIt >
bool cliext::next_permutation (_BidIt _First, _BidIt _Last)
 
template<class _BidIt , class _Pr >
bool cliext::next_permutation_unchecked (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt , class _Pr >
bool cliext::next_permutation (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt >
bool cliext::prev_permutation_unchecked (_BidIt _First, _BidIt _Last)
 
template<class _BidIt >
bool cliext::prev_permutation (_BidIt _First, _BidIt _Last)
 
template<class _BidIt , class _Pr >
bool cliext::prev_permutation_unchecked (_BidIt _First, _BidIt _Last, _Pr _Pred)
 
template<class _BidIt , class _Pr >
bool cliext::prev_permutation (_BidIt _First, _BidIt _Last, _Pr _Pred)
 

Variables

_STD_BEGIN const int _ISORT_MAX = 32
 
const _Ty & _Right
 
const _Ty & _Right
 
_FwdIt cliext::_Last
 
_FwdIt const _Ty cliext::_Val
 
_Diff cliext::_Count = 0
 
_FwdIt const _Ty _Pr cliext::_Pred
 
_RanIt cliext::_Pfirst = _Mid
 
_RanIt cliext::_Plast = _Pfirst + 1
 
_RanIt cliext::_Gfirst = _Plast
 
_RanIt cliext::_Glast = _Pfirst
 

Macro Definition Documentation

#define _ALGORITHM_
#define _CLI_ALGORITHM_
#define _DEBUG_HEAP (   first,
  last 
)
#define _DEBUG_HEAP_PRED (   first,
  last,
  pred 
)
#define _STLCLRDB_HEAP (   first,
  last 
)
#define _STLCLRDB_HEAP_PRED (   first,
  last,
  pred 
)

Function Documentation

template<class _FwdIt , class _Pr >
_FwdIt _Adjacent_find ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
65  { // find first signed char that matches _Val
66  _STLCLRDB_RANGE(_First, _Last);
67  _First = (const signed char *)std::memchr(_First, _Val,
68  _Last - _First);
69  return (_First == 0 ? _Last : _First);
_Check_return_ _CRTIMP _CONST_RETURN void *__cdecl memchr(_In_reads_bytes_opt_(_MaxCount) const void *_Buf, _In_ int _Val, _In_ size_t _MaxCount)
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void _Adjust_heap ( _RanIt  _First,
_Diff  _Hole,
_Diff  _Bottom,
_Ty &&  _Val,
_Pr  _Pred 
)
inline
2378  { // merge [_First, _Mid) with [_Mid, _Last), using _Pred
2379  if (_Count1 + _Count2 == 2)
2380  { // order two one-element partitions
2381  if (_STLCLRDB_LT_PRED(_Pred, *_Mid, *_First))
2382  cliext::iter_swap(_First, _Mid);
2383  }
2384  else if (_Count1 <= _Count2 && _Count1 <= _Tempbuf._Maxlen())
2385  { // buffer left partition, then merge
2386  cliext::copy_unchecked(_First, _Mid, _Tempbuf._Init());
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_LT_PRED(pred, left, right)
Definition: memory:219
void iter_swap(_FwdIt1 _Left, _FwdIt2 _Right)
Definition: algorithm:573
_OutIt copy_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: memory:490
template<class _InIt , class _Pr >
bool _All_of ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
234  { // find first [_First2, _Last2) satisfying _Pred
_Iter::difference_type difference_type
Definition: xutility:373
template<class _InIt , class _Pr >
bool _Any_of ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
260  { // find first [_First2, _Last2) satisfying _Pred
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void _Buffered_merge ( _BidIt  _First,
_BidIt  _Mid,
_BidIt  _Last,
_Diff  _Count1,
_Diff  _Count2,
_Temp_iterator< _Ty > &  _Tempbuf,
_Pr  _Pred 
)
inline
2914  { // merge adjacent pairs of chunks to and from temp buffer
2915  cliext::_XChunked_merge(_First, _Last, _Tempbuf._Init(),
2916  _Chunk, _Count);
2917  cliext::_XChunked_merge(_Tempbuf._First(), _Tempbuf._Last(), _First,
2918  _Chunk *= 2, _Count);
2919  }
2920  }
2921 #endif // __cplusplus_cli
2922 
2923 template<class _BidIt,
2924  class _Diff,
2925  class _Ty> inline
2926  void _XStable_sort(_BidIt _First, _BidIt _Last, _Diff _Count,
2927  _Temp_iterator<_Ty> _Tempbuf)
2928  { // sort preserving order of equivalents, using operator<
2929  if (_Count <= _ISort::_Max)
2930  cliext::_XInsertion_sort(_First, _Last); // small
2931  else
2932  { // sort halves and merge
2933  _Diff _Count2 = (_Count + 1) / 2;
2934  _BidIt _Mid = _First;
2935  cliext::advance(_Mid, _Count2);
2936 
2937  if (_Count2 <= _Tempbuf._Maxlen())
2938  { // temp buffer big enough, sort each half using buffer
2939  cliext::_XBuffered_merge_sort(_First, _Mid, _Count2,
2940  _Tempbuf);
2941  cliext::_XBuffered_merge_sort(_Mid, _Last, _Count - _Count2,
2942  _Tempbuf);
2943  }
2944  else
2945  { // temp buffer not big enough, divide and conquer
2946  cliext::_XStable_sort(_First, _Mid, _Count2, _Tempbuf);
2947  cliext::_XStable_sort(_Mid, _Last, _Count - _Count2, _Tempbuf);
2948  }
2949 
2950  cliext::_XBuffered_merge(_First, _Mid, _Last,
2951  _Count2, _Count - _Count2, _Tempbuf); // merge sorted halves
2952  }
2953  }
2954 
2955 #if __cplusplus_cli
2956 template<class _BidIt,
2957  class _Diff,
void _XBuffered_merge_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf)
Definition: algorithm:2872
_Pty _First() const
Definition: xmemory:830
void _XStable_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf)
Definition: algorithm:2926
void _XBuffered_merge(_BidIt _First, _BidIt _Mid, _BidIt _Last, _Diff _Count1, _Diff _Count2, _Temp_iterator< _Ty > _Tempbuf)
Definition: algorithm:2214
ptrdiff_t _Maxlen()
Definition: xmemory:840
void _XStable_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf, _Pr _Pred)
Definition: algorithm:3105
_Temp_iterator< _Ty > & _Init()
Definition: xmemory:824
Definition: xmemory:741
void advance(_InIt_t%_Where, _Diff_t _Off)
Definition: xutility:694
void _XChunked_merge(_BidIt _First, _BidIt _Last, _OutIt _Dest, _Diff _Chunk, _Diff _Count)
Definition: algorithm:2842
_Diff _Count
Definition: algorithm:1941
void _XInsertion_sort(_BidIt _First, _BidIt _Last)
Definition: algorithm:2519
_FwdIt _Last
Definition: algorithm:1936
_Pty _Last() const
Definition: xmemory:835
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void _Buffered_merge_sort ( _BidIt  _First,
_BidIt  _Last,
_Diff  _Count,
_Temp_iterator< _Ty > &  _Tempbuf,
_Pr  _Pred 
)
inline
3202  { // order [First, _Last) up to _Mid, using operator<
3204 
3205  cliext::make_heap_unchecked(_First, _Mid);
3206 
3207  for (_RanIt _Next = _Mid; _Next < _Last; ++_Next)
3208  if (_STLCLRDB_LT(*_Next, *_First))
3209  _XPop_heap(_First, _Mid, _Next,
3210  _Ty(*_Next)); // replace top with new largest
3211  cliext::sort_heap_unchecked(_First, _Mid);
3212  }
3213 
3214 template<class _RanIt> inline
3215  void partial_sort(_RanIt _First, _RanIt _Mid, _RanIt _Last)
3216  { // order [First, _Last) up to _Mid, using operator<
3217  _STLCLRDB_RANGE(_First, _Mid);
3218  _STLCLRDB_RANGE(_Mid, _Last);
3220  _Unchecked(_First), _Unchecked(_Mid), _Unchecked(_Last));
3221  }
3222 
#define _STLCLRDB_LT(left, right)
Definition: memory:218
void partial_sort_unchecked(_RanIt _First, _RanIt _Mid, _RanIt _Last)
Definition: algorithm:3201
void make_heap_unchecked(_RanIt _First, _RanIt _Last)
Definition: algorithm:1702
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
_Iter::value_type value_type
Definition: xutility:372
void partial_sort(_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
Definition: algorithm:3310
void sort_heap_unchecked(_RanIt _First, _RanIt _Last)
Definition: algorithm:1760
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
void _XPop_heap(_RanIt _First, _RanIt _Last, _RanIt _Dest, _Ty _Val, _Pr _Pred)
Definition: algorithm:1669
template<class _BidIt , class _Diff , class _Ty >
_BidIt _Buffered_rotate ( _BidIt  _First,
_BidIt  _Mid,
_BidIt  _Last,
_Diff  _Count1,
_Diff  _Count2,
_Temp_iterator< _Ty > &  _Tempbuf 
)
inline
2172  { // buffer left partition, then copy parts
2173  cliext::copy_unchecked(_First, _Mid, _Tempbuf._Init());
2174  cliext::copy_unchecked(_Mid, _Last, _First);
2176  _Tempbuf._First(), _Tempbuf._Last(), _Last));
2177  }
2178  else if (_Count2 <= _Tempbuf._Maxlen())
2179  { // buffer right partition, then copy parts
2180  cliext::copy_unchecked(_Mid, _Last, _Tempbuf._Init());
2181  cliext::copy_backward_unchecked(_First, _Mid, _Last);
2182  return (cliext::copy_unchecked(
2183  _Tempbuf._First(), _Tempbuf._Last(), _First));
2184  }
2185  else
2186  { // buffer too small, rotate in place
2187  cliext::rotate_unchecked(_First, _Mid, _Last);
2188  cliext::advance(_First, _Count2);
2189  return (_First);
2190  }
2191  }
2192 #endif // __cplusplus_cli
2193 
2194 template<class _BidIt1,
2195  class _BidIt2,
2196  class _BidIt3> inline
void rotate_unchecked(_FwdIt _First, _FwdIt _Mid, _FwdIt _Last)
Definition: algorithm:1193
_Pty _First() const
Definition: xmemory:830
ptrdiff_t _Maxlen()
Definition: xmemory:840
_Temp_iterator< _Ty > & _Init()
Definition: xmemory:824
_BidIt2 copy_backward_unchecked(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
Definition: memory:514
void advance(_InIt_t%_Where, _Diff_t _Off)
Definition: xutility:694
_OutIt copy_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: memory:490
_FwdIt _Last
Definition: algorithm:1936
_Pty _Last() const
Definition: xmemory:835
template<class _BidIt , class _OutIt , class _Diff , class _Pr >
void _Chunked_merge ( _BidIt  _First,
_BidIt  _Last,
_OutIt  _Dest,
_Diff  _Chunk,
_Diff  _Count,
_Pr  _Pred 
)
inline
3176  { // sort preserving order of equivalents, using _Pred
3179 
3180  if (_First != _Last)
3181  { // sort nontrivial sequence
3182  _Diff _Count = 0;
3183  _Iter_distance(_First, _Last, _Count);
3184  _TEMP_ITER(_BidIt, _Ty) _Tempbuf((_Count + 1) / 2);
3185  cliext::_XStable_sort(_First, _Last, _Count, _Tempbuf, _Pred);
3186  }
3187  }
3188 
3189 template<class _BidIt,
3190  class _Pr> inline
3191  void stable_sort(_BidIt _First, _BidIt _Last, _Pr _Pred)
3192  { // sort preserving order of equivalents, using _Pred
3193  _STLCLRDB_RANGE(_First, _Last);
3194  _STLCLRDB_POINTER(_Pred);
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_POINTER(first)
Definition: memory:221
_Iter::difference_type difference_type
Definition: xutility:373
#define _TEMP_ITER(iter_t, value_t)
Definition: memory:244
void stable_sort(_BidIt _First, _BidIt _Last, _Pr _Pred)
Definition: algorithm:3270
void _XStable_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf, _Pr _Pred)
Definition: algorithm:3105
_Iter_distance(_First, _Last, _Count)
_Iter::value_type value_type
Definition: xutility:372
void stable_sort_unchecked(_BidIt _First, _BidIt _Last)
Definition: algorithm:2990
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_Diff _Count
Definition: algorithm:1941
Definition: adapter:7
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt , class _Pr >
_OutIt _Copy_if ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
327  { // no match, take big jump and back up as needed
template<class _InIt , class _Pr >
iterator_traits<_InIt>::difference_type _Count_if ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
96  { // find first satisfying _Pred
97  _STLCLRDB_RANGE(_First, _Last);
100  _Unchecked(_First), _Unchecked(_Last), _Pred));
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_InIt find_if_unchecked(_InIt _First, _InIt _Last, _Pr _Pred)
Definition: algorithm:85
#define _STLCLRDB_POINTER(first)
Definition: memory:221
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Ty , class _Diff , class _Pr >
pair<_FwdIt, _FwdIt> _Equal_range ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val,
_Pr  _Pred,
_Diff *   
)
inline
2611  { // no room at bottom, rotate pivot upward
2612  if (_Plast != _Gfirst)
2614  ++_Plast;
2616  }
2617  else if (_Gfirst == _Last)
2618  { // no room at top, rotate pivot downward
2619  if (--_Glast != --_Pfirst)
2622  }
2623  else
2625  }
2626  }
2627 
2628 template<class _RanIt,
2629  class _Diff> inline
2630  void _XSort(_RanIt _First, _RanIt _Last, _Diff _Ideal)
_RanIt _Plast
Definition: algorithm:2577
_RanIt _Pfirst
Definition: algorithm:2576
_RanIt _Glast
Definition: algorithm:2589
void _XSort(_RanIt _First, _RanIt _Last, _Diff _Ideal, _Pr _Pred)
Definition: algorithm:2792
_RanIt _Gfirst
Definition: algorithm:2588
void iter_swap(_FwdIt1 _Left, _FwdIt2 _Right)
Definition: algorithm:573
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt1 , class _FwdIt2 , class _Diff1 , class _Diff2 , class _Pr >
_FwdIt1 _Find_end ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2,
_Pr  _Pred,
_Diff1 *  ,
_Diff2 *   
)
inline
775  { // replace [_Dest, _Dest + _Count) with _Func()
776  for (; 0 < _Count; --_Count, ++_Dest)
777  *_Dest = _Func();
778  }
779 
780 template<class _OutIt,
781  class _Diff,
782  class _Fn0> inline
783  void generate_n(_OutIt _Dest, _Diff _Count, _Fn0 _Func)
784  { // replace [_Dest, _Dest + _Count) with _Func()
785  _STLCLRDB_POINTER(_Dest);
786  _STLCLRDB_POINTER(_Func);
787  cliext::generate_n_unchecked(_Unchecked(_Dest), _Count, _Func);
788  }
789 
_OutIt generate_n(_OutIt _Dest, _Diff _Count, _Fn0 _Func)
Definition: algorithm:1501
#define _STLCLRDB_POINTER(first)
Definition: memory:221
void generate_n_unchecked(_OutIt _Dest, _Diff _Count, _Fn0 _Func)
Definition: algorithm:774
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
_Diff _Count
Definition: algorithm:1941
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 _Find_first_of ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2,
_Pr  _Pred 
)
inline
822  { // copy omitting each element satisfying _Pred
823  for (; _First != _Last; ++_First)
824  if (!_Pred(*_First))
825  *_Dest++ = *_First;
826  return (_Dest);
827  }
828 
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _Pr >
_InIt _Find_if ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
48  { // find first matching _Val
template<class _InIt , class _Pr >
_InIt _Find_if_not ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
301  { // find first _Count * _Val match, random-access iterators
template<class _InIt , class _Fn1 >
void _For_each ( _InIt  _First,
_InIt  _Last,
_Fn1 &  _Func 
)
inline
27  { // perform function for each element
template<class _FwdIt , class _Fn0 >
void _Generate ( _FwdIt  _First,
_FwdIt  _Last,
_Fn0  _Func 
)
inline
1472  { // test if range is a heap ordered by _Pred
1474 
1475  _Diff _Size = _Last - _First;
_Iter::difference_type difference_type
Definition: xutility:373
_Check_return_ _In_ long _Size
Definition: io.h:325
_FwdIt _Last
Definition: algorithm:1936
template<class _OutIt , class _Diff , class _Fn0 >
_OutIt _Generate_n ( _OutIt  _Dest,
_Diff  _Count,
_Fn0  _Func 
)
inline
1499  { // percolate _Hole to _Top or where _Val belongs, using operator<
template<class _InIt1 , class _InIt2 , class _Pr >
bool _Includes ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_Pr  _Pred 
)
inline
3420  { // test if all [_First1, _Last1) in [_First2, _Last2), using operator<
3421  _STLCLRDB_ORDER(_First1, _Last1);
3422  _STLCLRDB_ORDER(_First2, _Last2);
3424  _Unchecked(_First1), _Unchecked(_Last1),
3425  _Unchecked(_First2), _Unchecked(_Last2)));
3426  }
3427 
3428  // TEMPLATE FUNCTION includes WITH PRED
3429 template<class _InIt1,
3430  class _InIt2,
#define _STLCLRDB_ORDER(first, last)
Definition: memory:223
bool includes_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2)
Definition: algorithm:3403
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void _Inplace_merge ( _BidIt  _First,
_BidIt  _Mid,
_BidIt  _Last,
_Pr  _Pred,
_Diff *  ,
_Ty *   
)
inline
2965  { // sort halves and merge
2966  _Diff _Count2 = (_Count + 1) / 2;
2967  _BidIt _Mid = _First;
2968  cliext::advance(_Mid, _Count2);
2969 
2970  if (_Count2 <= _Tempbuf._Maxlen())
2971  { // temp buffer big enough, sort each half using buffer
2972  cliext::_XBuffered_merge_sort(_First, _Mid, _Count2,
2973  _Tempbuf);
void _XBuffered_merge_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf)
Definition: algorithm:2872
void advance(_InIt_t%_Where, _Diff_t _Off)
Definition: xutility:694
_Diff _Count
Definition: algorithm:1941
template<class _BidIt , class _Pr >
void _Insertion_sort ( _BidIt  _First,
_BidIt  _Last,
_Pr  _Pred 
)
inline
template<class _BidIt , class _Pr , class _Ty >
void _Insertion_sort1 ( _BidIt  _First,
_BidIt  _Last,
_Pr  _Pred,
_Ty *   
)
inline
3007  { // sort preserving order of equivalents, using operator<
3008  _STLCLRDB_RANGE(_First, _Last);
3010  }
3011 
3012  // TEMPLATE FUNCTION stable_sort WITH PRED
3013 template<class _BidIt,
3014  class _OutIt,
3015  class _Diff,
3016  class _Pr> inline
3017  void _XChunked_merge(_BidIt _First, _BidIt _Last, _OutIt _Dest,
3018  _Diff _Chunk, _Diff _Count, _Pr _Pred)
3019  { // copy merging chunks, using _Pred
3020  for (_Diff _Chunk2 = _Chunk * 2; _Chunk2 <= _Count; _Count -= _Chunk2)
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
void _XChunked_merge(_BidIt _First, _BidIt _Last, _OutIt _Dest, _Diff _Chunk, _Diff _Count, _Pr _Pred)
Definition: algorithm:3017
void stable_sort_unchecked(_BidIt _First, _BidIt _Last)
Definition: algorithm:2990
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_Diff _Count
Definition: algorithm:1941
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt , class _Diff , class _Pr >
_RanIt _Is_heap_until ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred,
_Diff *   
)
inline
template<class _InIt , class _Pr >
bool _Is_partitioned ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
561  { // look for one of [_First2, _Last2) satisfying _Pred with element
template<class _FwdIt , class _Pr >
_FwdIt _Is_sorted_until ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
template<class _FwdIt , class _Ty , class _Diff , class _Pr >
_FwdIt _Lower_bound ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val,
_Pr  _Pred,
_Diff *   
)
inline
2510  { // merge [_First, _Mid) with [_Mid, _Last), using _Pred
2511  _STLCLRDB_ORDER_PRED(_First, _Mid, _Pred);
2514  _Unchecked(_First), _Unchecked(_Mid), _Unchecked(_Last), _Pred);
2515  }
2516 
2517  // TEMPLATE FUNCTION sort
2518 template<class _BidIt> inline
2519  void _XInsertion_sort(_BidIt _First, _BidIt _Last)
2520  { // insertion sort [_First, _Last), using operator<
2522 
2523  if (_First != _Last)
2524  for (_BidIt _Next = _First; ++_Next != _Last; )
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
void inplace_merge_unchecked(_BidIt _First, _BidIt _Mid, _BidIt _Last)
Definition: algorithm:2324
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
#define _STLCLRDB_ORDER_PRED(first, last, pred)
Definition: memory:224
_Iter::value_type value_type
Definition: xutility:372
void _XInsertion_sort(_BidIt _First, _BidIt _Last, _Pr _Pred)
Definition: algorithm:2676
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void _Make_heap ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred,
_Diff *  ,
_Ty *   
)
inline
2442  { // buffer left partition, then merge
2443  cliext::copy_unchecked(_First, _Mid, _Tempbuf._Init());
2444  cliext::merge_unchecked(_Tempbuf._First(), _Tempbuf._Last(),
2445  _Mid, _Last, _First, _Pred);
2446  }
2447  else if (_Count2 <= _Tempbuf._Maxlen())
2448  { // buffer right partition, then merge
2449  cliext::copy_unchecked(_Mid, _Last, _Tempbuf._Init());
2450  cliext::_XMerge_backward(_First, _Mid,
2451  _Tempbuf._First(), _Tempbuf._Last(), _Last, _Pred);
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_OutIt merge_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
Definition: algorithm:2073
_OutIt copy_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: memory:490
_BidIt3 _XMerge_backward(_BidIt1 _First1, _BidIt1 _Last1, _BidIt2 _First2, _BidIt2 _Last2, _BidIt3 _Dest)
Definition: algorithm:2197
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Pr >
_FwdIt _Max_element ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
3963  :0009 */
3964 
template<class _RanIt , class _Pr >
void _Med3 ( _RanIt  _First,
_RanIt  _Mid,
_RanIt  _Last,
_Pr  _Pred 
)
inline
3036  { // copy merging whole and partial last chunk
3037  _BidIt _Mid1 = _First;
3038  cliext::advance(_Mid1, _Chunk);
3039 
3040  cliext::merge_unchecked(_First, _Mid1,
3041  _Mid1, _Last, _Dest, _Pred);
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_OutIt merge_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
Definition: algorithm:2073
void advance(_InIt_t%_Where, _Diff_t _Off)
Definition: xutility:694
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt , class _Pr >
void _Median ( _RanIt  _First,
_RanIt  _Mid,
_RanIt  _Last,
_Pr  _Pred 
)
inline
3051  { // sort using temp buffer for merges, using _Pred
3052  _BidIt _Mid = _First;
3053  for (_Diff _Nleft = _Count; _ISort::_Max <= _Nleft; _Nleft -= _ISort::_Max)
3054  { // sort chunks
3055  _BidIt _Midn = _Mid;
3056  cliext::advance(_Midn, (int)_ISort::_Max);
3057 
void advance(_InIt_t%_Where, _Diff_t _Off)
Definition: xutility:694
_Diff _Count
Definition: algorithm:1941
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Merge ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
2887  { // merge adjacent pairs of chunks to and from temp buffer
2888  cliext::_XChunked_merge(_First, _Last, _Tempbuf._Init(),
2889  _Chunk, _Count);
2890  cliext::_XChunked_merge(_Tempbuf._First(), _Tempbuf._Last(), _First,
2891  _Chunk *= 2, _Count);
2892  }
2893  }
2894 
2895 #if __cplusplus_cli
2896 template<class _BidIt,
2897  class _Diff,
2898  class _Ty> inline
2899  void _XBuffered_merge_sort(_BidIt _First, _BidIt _Last, _Diff _Count,
2900  _Temp_gc_iterator<_Ty> _Tempbuf)
2901  { // sort using temp buffer for merges, using operator<
void _XChunked_merge(_BidIt _First, _BidIt _Last, _OutIt _Dest, _Diff _Chunk, _Diff _Count)
Definition: algorithm:2842
_Diff _Count
Definition: algorithm:1941
void _XBuffered_merge_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf, _Pr _Pred)
Definition: algorithm:3049
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Merge0 ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
2682  { // order next element
2683  _BidIt _Next1 = _Next;
2684  _Ty _Val = *_Next;
2685 
2686  if (_STLCLRDB_LT_PRED(_Pred, _Val, *_First))
2687  { // found new earliest element, move to front
2688  cliext::copy_backward_unchecked(_First, _Next, ++_Next1);
2689  *_First = _Val;
2690  }
2691  else
2692  { // look for insertion point after first
2693  for (_BidIt _First1 = _Next1;
2694  _STLCLRDB_LT_PRED(_Pred, _Val, *--_First1);
2695  _Next1 = _First1)
2696  *_Next1 = *_First1; // move hole down
2697  *_Next1 = _Val; // insert element in hole
2698  }
2699  }
2700  }
2701 
2702 template<class _RanIt,
2703  class _Pr> inline
2704  void _XMed3(_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
2705  { // sort median of three elements to middle
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_LT_PRED(pred, left, right)
Definition: memory:219
_BidIt2 copy_backward_unchecked(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
Definition: memory:514
void _XMed3(_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
Definition: algorithm:2704
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _BidIt1 , class _BidIt2 , class _BidIt3 , class _Pr >
_BidIt3 _Merge_backward ( _BidIt1  _First1,
_BidIt1  _Last1,
_BidIt2  _First2,
_BidIt2  _Last2,
_BidIt3  _Dest,
_Pr  _Pred 
)
inline
2861  { // copy merging whole and partial last chunk
2862  _BidIt _Mid = _First;
2863  cliext::advance(_Mid, _Chunk);
2864 
2865  cliext::merge_unchecked(_First, _Mid, _Mid, _Last, _Dest);
2866  }
2867  }
2868 
2869 template<class _BidIt,
2870  class _Diff,
2871  class _Ty> inline
2872  void _XBuffered_merge_sort(_BidIt _First, _BidIt _Last, _Diff _Count,
_OutIt merge_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
Definition: algorithm:2073
void advance(_InIt_t%_Where, _Diff_t _Off)
Definition: xutility:694
_Diff _Count
Definition: algorithm:1941
void _XBuffered_merge_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf, _Pr _Pred)
Definition: algorithm:3049
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Pr >
_FwdIt _Min_element ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
template<class _FwdIt , class _Pr >
pair<_FwdIt, _FwdIt> _Minmax_element ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
template<class _InIt1 , class _InIt2 , class _Pr >
pair<_InIt1, _InIt2> _Mismatch ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_Pr  _Pred 
)
inline
125  { // find first satisfying _Pred with successor
template<class _BidIt , class _Pr >
bool _Next_permutation ( _BidIt  _First,
_BidIt  _Last,
_Pr  _Pred 
)
inline
template<class _InIt , class _Pr >
bool _None_of ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
274  { // find first _Count * _Val match, forward iterators
275  if (_Count <= 0)
_Diff _Count
Definition: algorithm:1941
template<class _RanIt , class _Pr >
void _Nth_element ( _RanIt  _First,
_RanIt  _Nth,
_RanIt  _Last,
_Pr  _Pred 
)
inline
3392  { // order Nth element, using _Pred
3393  _STLCLRDB_RANGE(_First, _Nth);
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
template<class _RanIt , class _Ty , class _Pr >
void _Partial_sort ( _RanIt  _First,
_RanIt  _Mid,
_RanIt  _Last,
_Pr  _Pred,
_Ty *   
)
inline
3299  { // copy [First1, _Last1) into [_First2, _Last2) using _Pred
3302 
3303  if (_First1 == _Last1 || _First2 == _Last2)
3304  return (_First2);
3305  else
3306  { // copy and sort nontrivial
_Iter::difference_type difference_type
Definition: xutility:373
_Iter::value_type value_type
Definition: xutility:372
template<class _InIt , class _RanIt , class _Diff , class _Ty , class _Pr >
_RanIt _Partial_sort_copy ( _InIt  _First1,
_InIt  _Last1,
_RanIt  _First2,
_RanIt  _Last2,
_Pr  _Pred,
_Diff *  ,
_Ty *   
)
inline
3341  { // order Nth element, using operator<
3342  for (; _ISort::_Max < _Last - _First; )
3343  { // divide and conquer, ordering partition containing Nth
3344  _PAIR_TYPE(_RanIt) _Mid =
3345  cliext::_XUnguarded_partition(_First, _Last);
#define _PAIR_TYPE(iter_t)
Definition: memory:31
Definition: adapter:7
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Pr >
_FwdIt _Partition ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred,
forward_iterator_tag   
)
inline
2125  { // copy merging ranges, both using _Pred
2126  _STLCLRDB_ORDER_PRED(_First1, _Last1, _Pred);
2127  _STLCLRDB_ORDER_PRED(_First2, _Last2, _Pred);
2128  _STLCLRDB_POINTER(_Dest);
2129  return (cliext::merge_unchecked(
2130  _Unchecked(_First1), _Unchecked(_Last1),
2131  _Unchecked(_First2), _Unchecked(_Last2),
2132  _Unchecked(_Dest), _Pred));
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_OutIt merge_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
Definition: algorithm:2073
#define _STLCLRDB_POINTER(first)
Definition: memory:221
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
#define _STLCLRDB_ORDER_PRED(first, last, pred)
Definition: memory:224
template<class _BidIt , class _Pr >
_BidIt _Partition ( _BidIt  _First,
_BidIt  _Last,
_Pr  _Pred,
bidirectional_iterator_tag   
)
inline
2141  { // rotate [_First, _Last) using temp buffer
2142  if (_Count1 <= _Count2 && _Count1 <= _Tempbuf._Maxlen())
2143  { // buffer left partition, then copy parts
2144  cliext::copy_unchecked(_First, _Mid, _Tempbuf._Init());
2145  cliext::copy_unchecked(_Mid, _Last, _First);
2147  _Tempbuf._First(), _Tempbuf._Last(), _Last));
2148  }
2149  else if (_Count2 <= _Tempbuf._Maxlen())
2150  { // buffer right partition, then copy parts
2151  cliext::copy_unchecked(_Mid, _Last, _Tempbuf._Init());
2152  cliext::copy_backward_unchecked(_First, _Mid, _Last);
2153  return (cliext::copy_unchecked(
2154  _Tempbuf._First(), _Tempbuf._Last(), _First));
_BidIt2 copy_backward_unchecked(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
Definition: memory:514
_OutIt copy_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: memory:490
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt1 , class _OutIt2 , class _Pr >
pair<_OutIt1, _OutIt2> _Partition_copy ( _InIt  _First,
_InIt  _Last,
_OutIt1  _Dest1,
_OutIt2  _Dest2,
_Pr  _Pred 
)
inline
387  { // enough room, look for a match
388  if (_Pred(*_First1, _Val))
389  { // found part of possible match, check it out
390  _Diff2 _Count1 = _Count;
391  _FwdIt1 _Mid1 = _First1;
392 
393  for (; _Oldfirst1 != _First1 && _First1[-1] == _Val; --_First1)
394  --_Count1; // back up over any skipped prefix
395 
396  if (_Count1 <= _Last1 - _Mid1)
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_Diff _Count
Definition: algorithm:1941
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _FwdIt , class _Diff , class _Pr >
_FwdIt _Partition_point ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred,
_Diff *   
)
inline
583  { // swap [_First1, _Last1) with [_First2, ...)
584  for (; _First1 != _Last1; ++_First1, ++_First2)
585  cliext::iter_swap(_First1, _First2);
586  return (_First2);
587  }
588 
589 template<class _FwdIt1,
590  class _FwdIt2> inline
591  _FwdIt2 swap_ranges(_FwdIt1 _First1, _FwdIt1 _Last1,
592  _FwdIt2 _First2)
593  { // swap [_First1, _Last1) with [_First2, ...)
594  _STLCLRDB_RANGE(_First1, _Last1);
_FwdIt2 swap_ranges(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _Dest)
Definition: algorithm:868
void iter_swap(_FwdIt1 _Left, _FwdIt2 _Right)
Definition: algorithm:573
_FwdIt2 swap_ranges_unchecked(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2)
Definition: algorithm:581
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void _Pop_heap ( _RanIt  _First,
_RanIt  _Last,
_RanIt  _Dest,
_Ty &&  _Val,
_Pr  _Pred,
_Diff *   
)
inline
2397  { // buffer too small, divide and conquer
2398  _BidIt _Firstn, _Lastn;
template<class _RanIt , class _Pr >
void _Pop_heap ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred 
)
inline
template<class _RanIt , class _Ty , class _Pr >
void _Pop_heap_0 ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred,
_Ty *   
)
inline
2410  { // right larger, cut it in half and partition left to match
template<class _Ty >
_Post_equal_to_ ( ) const
inline
template<class _Ty >
_Post_equal_to_ ( ) const
inline
template<class _BidIt , class _Pr >
bool _Prev_permutation ( _BidIt  _First,
_BidIt  _Last,
_Pr  _Pred 
)
inline
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void _Push_heap ( _RanIt  _First,
_Diff  _Hole,
_Diff  _Top,
_Ty &&  _Val,
_Pr  _Pred 
)
inline
2325  { // merge [_First, _Mid) with [_Mid, _Last), using operator<
template<class _RanIt , class _Diff , class _Ty , class _Pr >
void _Push_heap_0 ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred,
_Diff *  ,
_Ty *   
)
inline
2330  { // merge nontrivial sequence
2331  _Diff _Count1 = 0;
2332  _Iter_distance(_First, _Mid, _Count1);
2333  _Diff _Count2 = 0;
2334  _Iter_distance(_Mid, _Last, _Count2);
2335  _TEMP_ITER(_BidIt, _Ty)
2336  _Tempbuf(_Count1 < _Count2 ? _Count1 : _Count2);
2337 
#define _TEMP_ITER(iter_t, value_t)
Definition: memory:244
_Iter_distance(_First, _Last, _Count)
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt , class _Fn1 , class _Diff >
void _Random_shuffle ( _RanIt  _First,
_RanIt  _Last,
_Fn1 &  _Func,
_Diff *   
)
inline
2053  { // test if _Val equivalent to some element, using _Pred
2054  _First = cliext::lower_bound_unchecked(_First, _Last, _Val, _Pred);
2055  return (_First != _Last && !_Pred(_Val, *_First));
2056  }
2057 
2058 template<class _FwdIt,
2059  class _Ty,
2060  class _Pr> inline
2061  bool binary_search(_FwdIt _First, _FwdIt _Last,
2062  const _Ty% _Val, _Pr _Pred)
_FwdIt lower_bound_unchecked(_FwdIt _First, _FwdIt _Last, _Ty%_Val)
Definition: algorithm:1797
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
bool binary_search(_FwdIt _First, _FwdIt _Last, const _Ty &_Val, _Pr _Pred)
Definition: algorithm:2662
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Ty >
_FwdIt _Remove ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val 
)
inline
1731  { // make [_First, _Last) into a heap, using _Pred
1734 
1735  if (1 < _Last - _First)
1736  { // make nontrivial heap
1737  _Diff _Bottom = _Last - _First;
_Iter::difference_type difference_type
Definition: xutility:373
_Iter::value_type value_type
Definition: xutility:372
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt , class _Ty >
_OutIt _Remove_copy ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
const _Ty &  _Val 
)
inline
1579  { // check and push non-empty heap+addition
1580  _STLCLRDB_HEAP_PRED(_First, _Last - 1, _Pred);
1582  _Pred);
1583  }
1584  }
1585 
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_HEAP_PRED(first, last, pred)
Definition: algorithm:1490
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
void push_heap_unchecked(_RanIt _First, _RanIt _Last)
Definition: algorithm:1512
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt , class _Pr >
_OutIt _Remove_copy_if ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
1659  { // only child at bottom, move _Hole down to it
1660  *(_First + _Hole) = *(_First + (_Bottom - 1));
1661  _Hole = _Bottom - 1;
template<class _FwdIt , class _Pr >
_FwdIt _Remove_if ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
1761  { // order heap by repeatedly popping, using operator<
template<class _FwdIt , class _Ty >
void _Replace ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Oldval,
const _Ty &  _Newval 
)
inline
1223  { // copy rotating [_First, _Last)
template<class _InIt , class _OutIt , class _Ty >
_OutIt _Replace_copy ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
const _Ty &  _Oldval,
const _Ty &  _Newval 
)
inline
1269  { // shuffle [_First, _Last)
template<class _InIt , class _OutIt , class _Pr , class _Ty >
_OutIt _Replace_copy_if ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Pr  _Pred,
const _Ty &  _Val 
)
inline
template<class _FwdIt , class _Pr , class _Ty >
void _Replace_if ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred,
const _Ty &  _Val 
)
inline
1243  { // shuffle [_First, _Last)
_Iter::difference_type difference_type
Definition: xutility:373
template<class _BidIt , class _OutIt >
_OutIt _Reverse_copy ( _BidIt  _First,
_BidIt  _Last,
_OutIt  _Dest 
)
inline
1945  { // divide and conquer, check midpoint
1946  _Diff _Count2 = _Count / 2;
1947  _FwdIt _Mid = _First;
_Diff _Count
Definition: algorithm:1941
template<class _FwdIt1 , class _FwdIt2 , class _Diff1 , class _Diff2 , class _Pr >
_FwdIt1 _Search ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2,
_Pr  _Pred,
_Diff1 *  ,
_Diff2 *   
)
inline
616  { // transform [_First, _Last) with _Func
617  _STLCLRDB_RANGE(_First, _Last);
618  _STLCLRDB_POINTER(_Dest);
619  _STLCLRDB_POINTER(_Func);
621  _Unchecked(_First), _Unchecked(_Last),
622  _Dest, _Func));
623  }
624 
625  // TEMPLATE FUNCTION transform WITH BINARY OP
626 template<class _InIt1,
627  class _InIt2,
628  class _OutIt,
629  class _Fn2> inline
630  _OutIt transform_unchecked(_InIt1 _First1, _InIt1 _Last1,
631  _InIt2 _First2, _OutIt _Dest, _Fn2 _Func)
632  { // transform [_First1, _Last1) and [_First2, _Last2) with _Func
#define _STLCLRDB_POINTER(first)
Definition: memory:221
_OutIt transform_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _OutIt _Dest, _Fn2 _Func)
Definition: algorithm:630
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
_OutIt transform_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest, _Fn1 _Func)
Definition: algorithm:604
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt1 , class _Diff2 , class _Ty , class _Pr >
_FwdIt1 _Search_n ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_Diff2  _Count,
const _Ty &  _Val,
_Pr  _Pred,
forward_iterator_tag   
)
inline
669  { // replace each matching _Oldval with _Newval
670  _STLCLRDB_RANGE(_First, _Last);
672  _Oldval, _Newval);
673  }
674 
675  // TEMPLATE FUNCTION replace_if
676 template<class _FwdIt,
677  class _Pr,
678  class _Ty> inline
679  void replace_if_unchecked(_FwdIt _First, _FwdIt _Last,
680  _Pr _Pred, const _Ty% _Val)
681  { // replace each satisfying _Pred with _Val
682  for (; _First != _Last; ++_First)
683  if (_Pred(*_First))
684  *_First = _Val;
685  }
686 
687 template<class _FwdIt,
688  class _Pr,
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
void replace_if_unchecked(_FwdIt _First, _FwdIt _Last, _Pr _Pred, const _Ty%_Val)
Definition: algorithm:679
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
void replace_unchecked(_FwdIt _First, _FwdIt _Last, const _Ty%_Oldval, const _Ty%_Newval)
Definition: algorithm:657
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt1 , class _Diff2 , class _Ty , class _Pr >
_FwdIt1 _Search_n ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_Diff2  _Count,
const _Ty &  _Val,
_Pr  _Pred,
random_access_iterator_tag   
)
inline
705  { // copy replacing each matching _Oldval with _Newval
706  for (; _First != _Last; ++_First, ++_Dest)
707  *_Dest = *_First == _Oldval ? _Newval : *_First;
708  return (_Dest);
709  }
710 
711 template<class _InIt,
712  class _OutIt,
713  class _Ty> inline
714  _OutIt replace_copy(_InIt _First, _InIt _Last,
715  _OutIt _Dest, const _Ty% _Oldval, const _Ty% _Newval)
716  { // copy replacing each matching _Oldval with _Newval
717  _STLCLRDB_RANGE(_First, _Last);
718  _STLCLRDB_POINTER(_Dest);
720  _Unchecked(_First), _Unchecked(_Last),
721  _Unchecked(_Dest), _Oldval, _Newval));
722  }
723 
724  // TEMPLATE FUNCTION replace_copy_if
725 template<class _InIt,
726  class _OutIt,
727  class _Pr,
728  class _Ty> inline
729  _OutIt replace_copy_if_unchecked(_InIt _First, _InIt _Last,
730  _OutIt _Dest, _Pr _Pred, const _Ty% _Val)
731  { // copy replacing each satisfying _Pred with _Val
732  for (; _First != _Last; ++_First, ++_Dest)
733  *_Dest = _Pred(*_First) ? _Val : *_First;
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_OutIt replace_copy_if_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred, const _Ty%_Val)
Definition: algorithm:729
_OutIt replace_copy_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest, const _Ty%_Oldval, const _Ty%_Newval)
Definition: algorithm:703
#define _STLCLRDB_POINTER(first)
Definition: memory:221
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
_OutIt replace_copy(_InIt _First, _InIt _Last, _OutIt _Dest, const _Ty &_Oldval, const _Ty &_Newval)
Definition: algorithm:1273
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Set_difference ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
3709  { // XOR sets [_First1, _Last1) and [_First2, _Last2), using _Pred
3710  _STLCLRDB_ORDER_PRED(_First1, _Last1, _Pred);
3711  _STLCLRDB_ORDER_PRED(_First2, _Last2, _Pred);
3712  _STLCLRDB_POINTER(_Dest);
3714  _Unchecked(_First1), _Unchecked(_Last1),
3715  _Unchecked(_First2), _Unchecked(_Last2), _Unchecked(_Dest), _Pred));
3716  }
3717 
3718  // TEMPLATE FUNCTION max_element
3719 template<class _FwdIt> inline
3720  _FwdIt max_element_unchecked(_FwdIt _First, _FwdIt _Last)
3721  { // find largest element, using operator<
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_POINTER(first)
Definition: memory:221
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
#define _STLCLRDB_ORDER_PRED(first, last, pred)
Definition: memory:224
_FwdIt max_element_unchecked(_FwdIt _First, _FwdIt _Last, _Pr _Pred)
Definition: algorithm:3741
_OutIt set_symmetric_difference_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
Definition: algorithm:3656
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Set_intersection ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
3594  { // take set [_First2, _Last2) from [_First1, _Last1), using operator<
3595  for (; _First1 != _Last1 && _First2 != _Last2; )
3596  if (_STLCLRDB_LT(*_First1, *_First2))
3597  *_Dest++ = *_First1, ++_First1;
3598  else if (*_First2 < *_First1)
3599  ++_First2;
#define _STLCLRDB_LT(left, right)
Definition: memory:218
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Set_symmetric_difference ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
3835  { // permute and test for pure ascending, using operator<
3836  _STLCLRDB_RANGE(_First, _Last);
3838  _Unchecked(_First), _Unchecked(_Last)));
3839  }
3840 
3841  // TEMPLATE FUNCTION next_permutation WITH PRED
3842 template<class _BidIt,
3843  class _Pr> inline
3844  bool next_permutation_unchecked(_BidIt _First, _BidIt _Last, _Pr _Pred)
3845  { // permute and test for pure ascending, using _Pred
3846  _BidIt _Next = _Last;
3847  if (_First == _Last || _First == --_Next)
3848  return (false);
3849 
3850  for (; ; )
3851  { // find rightmost element smaller than successor
3852  _BidIt _Next1 = _Next;
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
bool next_permutation_unchecked(_BidIt _First, _BidIt _Last)
Definition: algorithm:3806
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
bool next_permutation_unchecked(_BidIt _First, _BidIt _Last, _Pr _Pred)
Definition: algorithm:3844
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt _Set_union ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
3464  { // OR sets [_First1, _Last1) and [_First2, _Last2), using operator<
3465  for (; _First1 != _Last1 && _First2 != _Last2; )
3466  if (_STLCLRDB_LT(*_First1, *_First2))
3467  *_Dest++ = *_First1, ++_First1;
3468  else if (*_First2 < *_First1)
3469  *_Dest++ = *_First2, ++_First2;
3470  else
3471  *_Dest++ = *_First1, ++_First1, ++_First2;
3472  _Dest = cliext::copy_unchecked(_First1, _Last1, _Dest);
3473  return (cliext::copy_unchecked(_First2, _Last2, _Dest));
3474  }
3475 
3476 template<class _InIt1,
3477  class _InIt2,
3478  class _OutIt> inline
3479  _OutIt set_union(_InIt1 _First1, _InIt1 _Last1,
3480  _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
3481  { // OR sets [_First1, _Last1) and [_First2, _Last2), using operator<
_OutIt set_union(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
Definition: algorithm:3488
#define _STLCLRDB_LT(left, right)
Definition: memory:218
_OutIt copy_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: memory:490
template<class _RanIt , class _Diff , class _Pr >
void _Sort ( _RanIt  _First,
_RanIt  _Last,
_Diff  _Ideal,
_Pr  _Pred 
)
inline
3124  { // temp buffer not big enough, divide and conquer
3125  cliext::_XStable_sort(_First, _Mid, _Count2, _Tempbuf,
3126  _Pred);
3127  cliext::_XStable_sort(_Mid, _Last, _Count - _Count2, _Tempbuf,
3128  _Pred);
3129  }
3130 
3131  cliext::_XBuffered_merge(_First, _Mid, _Last,
3132  _Count2, _Count - _Count2, _Tempbuf, _Pred); // merge halves
3133  }
3134  }
3135 
3136 #if __cplusplus_cli
3137 template<class _BidIt,
3138  class _Diff,
3139  class _Ty,
3140  class _Pr> inline
3141  void _XStable_sort(_BidIt _First, _BidIt _Last, _Diff _Count,
3142  _Temp_gc_iterator<_Ty> _Tempbuf, _Pr _Pred)
3143  { // sort preserving order of equivalents, using _Pred
3144  if (_Count <= _ISort::_Max)
3145  cliext::_XInsertion_sort(_First, _Last, _Pred); // small
3146  else
3147  { // sort halves and merge
3148  _Diff _Count2 = (_Count + 1) / 2;
3149  _BidIt _Mid = _First;
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
void _XStable_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf)
Definition: algorithm:2926
void _XBuffered_merge(_BidIt _First, _BidIt _Mid, _BidIt _Last, _Diff _Count1, _Diff _Count2, _Temp_iterator< _Ty > _Tempbuf)
Definition: algorithm:2214
void _XStable_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf, _Pr _Pred)
Definition: algorithm:3105
_Diff _Count
Definition: algorithm:1941
void _XInsertion_sort(_BidIt _First, _BidIt _Last)
Definition: algorithm:2519
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt , class _Pr >
void _Sort_heap ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred 
)
inline
template<class _BidIt , class _Pr , class _Diff , class _Ty >
_BidIt _Stable_partition ( _BidIt  _First,
_BidIt  _Last,
_Pr  _Pred,
_Diff  _Count,
_Temp_iterator< _Ty > &  _Tempbuf 
)
inline
2217  { // merge [_First, _Mid) with [_Mid, _Last), using operator<
2218  if (_Count1 + _Count2 == 2)
2219  { // order two one-element partitions
2220  if (_STLCLRDB_LT(*_Mid, *_First))
2221  cliext::iter_swap(_First, _Mid);
2222  }
2223  else if (_Count1 <= _Count2 && _Count1 <= _Tempbuf._Maxlen())
2224  { // buffer left partition, then merge
2225  cliext::copy_unchecked(_First, _Mid, _Tempbuf._Init());
2226  cliext::merge_unchecked(_Tempbuf._First(), _Tempbuf._Last(),
2227  _Mid, _Last, _First);
2228  }
2229  else if (_Count2 <= _Tempbuf._Maxlen())
2230  { // buffer right partition, then merge
2231  cliext::copy_unchecked(_Mid, _Last, _Tempbuf._Init());
2232  cliext::_XMerge_backward(_First, _Mid,
2233  _Tempbuf._First(), _Tempbuf._Last(), _Last);
2234  }
2235  else
2236  { // buffer too small, divide and conquer
2237  _BidIt _Firstn, _Lastn;
2238  _Diff _Count1n, _Count2n;
2239 
_OutIt merge_unchecked(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
Definition: algorithm:2073
#define _STLCLRDB_LT(left, right)
Definition: memory:218
_Pty _First() const
Definition: xmemory:830
ptrdiff_t _Maxlen()
Definition: xmemory:840
void iter_swap(_FwdIt1 _Left, _FwdIt2 _Right)
Definition: algorithm:573
_Temp_iterator< _Ty > & _Init()
Definition: xmemory:824
_OutIt copy_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: memory:490
_BidIt3 _XMerge_backward(_BidIt1 _First1, _BidIt1 _Last1, _BidIt2 _First2, _BidIt2 _Last2, _BidIt3 _Dest)
Definition: algorithm:2197
_FwdIt _Last
Definition: algorithm:1936
_Pty _Last() const
Definition: xmemory:835
template<class _BidIt , class _Pr , class _Diff , class _Ty >
_BidIt _Stable_partition ( _BidIt  _First,
_BidIt  _Last,
_Pr  _Pred,
_Diff *  ,
_Ty *   
)
inline
2249  { // right larger, cut it in half and partition left to match
2250  _Count1n = 0, _Count2n = _Count2 / 2;
2251  _Lastn = _Mid;
2252  cliext::advance(_Lastn, _Count2n);
void advance(_InIt_t%_Where, _Diff_t _Off)
Definition: xutility:694
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void _Stable_sort ( _BidIt  _First,
_BidIt  _Last,
_Diff  _Count,
_Temp_iterator< _Ty > &  _Tempbuf,
_Pr  _Pred 
)
inline
3228  { // order [First, _Last) up to _Mid, using _Pred
3230 
3231  cliext::make_heap_unchecked(_First, _Mid, _Pred);
3232 
3233  for (_RanIt _Next = _Mid; _Next < _Last; ++_Next)
3234  if (_STLCLRDB_LT_PRED(_Pred, *_Next, *_First))
3235  _XPop_heap(_First, _Mid, _Next,
3236  _Ty(*_Next), _Pred); // replace top with new largest
3237  cliext::sort_heap_unchecked(_First, _Mid, _Pred);
3238  }
3239 
3240 template<class _RanIt,
3241  class _Pr> inline
3242  void partial_sort(_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
3243  { // order [First, _Last) up to _Mid, using _Pred
3244  _STLCLRDB_RANGE(_First, _Mid);
3245  _STLCLRDB_RANGE(_Mid, _Last);
3246  _STLCLRDB_POINTER(_Pred);
3248  _Unchecked(_First), _Unchecked(_Mid), _Unchecked(_Last), _Pred);
3249  }
3250 
3251  // TEMPLATE FUNCTION partial_sort_copy
3252 template<class _InIt,
3253  class _RanIt> inline
3254  _RanIt partial_sort_copy_unchecked(_InIt _First1, _InIt _Last1,
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_LT_PRED(pred, left, right)
Definition: memory:219
#define _STLCLRDB_POINTER(first)
Definition: memory:221
void partial_sort_unchecked(_RanIt _First, _RanIt _Mid, _RanIt _Last)
Definition: algorithm:3201
void make_heap_unchecked(_RanIt _First, _RanIt _Last)
Definition: algorithm:1702
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
_RanIt partial_sort_copy_unchecked(_InIt _First1, _InIt _Last1, _RanIt _First2, _RanIt _Last2, _Pr _Pred)
Definition: algorithm:3297
_Iter::value_type value_type
Definition: xutility:372
void partial_sort(_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
Definition: algorithm:3310
void sort_heap_unchecked(_RanIt _First, _RanIt _Last)
Definition: algorithm:1760
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
void _XPop_heap(_RanIt _First, _RanIt _Last, _RanIt _Dest, _Ty _Val, _Pr _Pred)
Definition: algorithm:1669
template<class _BidIt , class _Diff , class _Ty , class _Pr >
void _Stable_sort ( _BidIt  _First,
_BidIt  _Last,
_Diff *  ,
_Ty *  ,
_Pr  _Pred 
)
inline
3263  { // copy and sort nontrivial
3264  _RanIt _Mid2 = _First2;
3265 
3266  for (; _First1 != _Last1 && _Mid2 != _Last2; ++_First1, ++_Mid2)
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt2 _Swap_ranges ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _Dest 
)
inline
862  { // remove each matching _Val
863  _STLCLRDB_RANGE(_First, _Last);
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt , class _Fn1 >
_OutIt _Transform ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Fn1  _Func 
)
inline
949  { // copy compressing pairs that match, input iterators
951 
952  _Ty _Val = *_First;
_Iter::value_type value_type
Definition: xutility:372
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _InIt1 , class _InIt2 , class _OutIt , class _Fn2 >
_OutIt _Transform ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_OutIt  _Dest,
_Fn2  _Func 
)
inline
1053  { // copy compressing pairs satisfying _Pred, random-access iterators
1054  return (_Unique_copy(_First, _Last, _Dest, _Pred,
1056  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_OutIt _Unique_copy(_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred, _Ty *)
Definition: algorithm:1814
Definition: xutility:308
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt , class _Pr >
pair<_RanIt, _RanIt> _Unguarded_partition ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred 
)
inline
3064  { // merge adjacent pairs of chunks to and from temp buffer
3065  cliext::_XChunked_merge(_First, _Last, _Tempbuf._Init(),
3066  _Chunk, _Count, _Pred);
3067  cliext::_XChunked_merge(_Tempbuf._First(), _Tempbuf._Last(), _First,
3068  _Chunk *= 2, _Count, _Pred);
3069  }
3070  }
3071 
3072 #if __cplusplus_cli
3073 template<class _BidIt,
3074  class _Diff,
3075  class _Ty,
3076  class _Pr> inline
3077  void _XBuffered_merge_sort(_BidIt _First, _BidIt _Last, _Diff _Count,
3078  _Temp_gc_iterator<_Ty> _Tempbuf, _Pr _Pred)
3079  { // sort using temp buffer for merges, using _Pred
3080  _BidIt _Mid = _First;
3081  for (_Diff _Nleft = _Count; _ISort::_Max <= _Nleft; _Nleft -= _ISort::_Max)
3082  { // sort chunks
3083  _BidIt _Midn = _Mid;
3084  cliext::advance(_Midn, (int)_ISort::_Max);
3085 
3086  cliext::_XInsertion_sort(_Mid, _Midn, _Pred);
3087  _Mid = _Midn;
3088  }
3089  cliext::_XInsertion_sort(_Mid, _Last, _Pred); // sort partial last chunk
3090 
3091  for (_Diff _Chunk = _ISort::_Max; _Chunk < _Count; _Chunk *= 2)
3092  { // merge adjacent pairs of chunks to and from temp buffer
3093  cliext::_XChunked_merge(_First, _Last, _Tempbuf._Init(),
3094  _Chunk, _Count, _Pred);
3095  cliext::_XChunked_merge(_Tempbuf._First(), _Tempbuf._Last(), _First,
3096  _Chunk *= 2, _Count, _Pred);
3097  }
3098  }
3099 #endif // __cplusplus_cli
3100 
3101 template<class _BidIt,
3102  class _Diff,
3103  class _Ty,
3104  class _Pr> inline
3105  void _XStable_sort(_BidIt _First, _BidIt _Last, _Diff _Count,
3106  _Temp_iterator<_Ty> _Tempbuf, _Pr _Pred)
3107  { // sort preserving order of equivalents, using _Pred
3108  if (_Count <= _ISort::_Max)
3109  cliext::_XInsertion_sort(_First, _Last, _Pred); // small
3110  else
3111  { // sort halves and merge
3112  _Diff _Count2 = (_Count + 1) / 2;
3113  _BidIt _Mid = _First;
3114  cliext::advance(_Mid, _Count2);
3115 
3116  if (_Count2 <= _Tempbuf._Maxlen())
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
ptrdiff_t _Maxlen()
Definition: xmemory:840
void _XStable_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf, _Pr _Pred)
Definition: algorithm:3105
Definition: xmemory:741
void advance(_InIt_t%_Where, _Diff_t _Off)
Definition: xutility:694
void _XChunked_merge(_BidIt _First, _BidIt _Last, _OutIt _Dest, _Diff _Chunk, _Diff _Count)
Definition: algorithm:2842
_Diff _Count
Definition: algorithm:1941
void _XInsertion_sort(_BidIt _First, _BidIt _Last)
Definition: algorithm:2519
void _XBuffered_merge_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf, _Pr _Pred)
Definition: algorithm:3049
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Pr >
_FwdIt _Unique ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
1778  { // order heap by repeatedly popping, using _Pred
1779  for (; 1 < _Last - _First; --_Last)
1781  }
1782 
1783 template<class _RanIt,
1784  class _Pr> inline
1785  void sort_heap(_RanIt _First, _RanIt _Last, _Pr _Pred)
1786  { // order heap by repeatedly popping, using _Pred
1787  _STLCLRDB_RANGE(_First, _Last);
1788  _STLCLRDB_POINTER(_Pred);
1789  _STLCLRDB_HEAP_PRED(_First, _Last, _Pred);
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_HEAP_PRED(first, last, pred)
Definition: algorithm:1490
#define _STLCLRDB_POINTER(first)
Definition: memory:221
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
void pop_heap_unchecked(_RanIt _First, _RanIt _Last)
Definition: algorithm:1622
void sort_heap(_RanIt _First, _RanIt _Last, _Pr _Pred)
Definition: algorithm:2482
void sort_heap_unchecked(_RanIt _First, _RanIt _Last)
Definition: algorithm:1760
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt , class _Ty , class _Pr >
_OutIt _Unique_copy ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Pr  _Pred,
_Ty *   
)
inline
1822  { // find first element not before _Val, using operator<
1823  _STLCLRDB_ORDER(_First, _Last);
1825  _Unchecked(_First), _Unchecked(_Last), _Val));
1826  }
_FwdIt lower_bound_unchecked(_FwdIt _First, _FwdIt _Last, _Ty%_Val)
Definition: algorithm:1797
#define _STLCLRDB_ORDER(first, last)
Definition: memory:223
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _OutIt , class _Pr >
_OutIt _Unique_copy ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Pr  _Pred,
input_iterator_tag   
)
inline
1834  { // find first element not before _Val, using _Pred
1836 
_Iter::difference_type difference_type
Definition: xutility:373
template<class _FwdIt , class _OutIt , class _Pr >
_OutIt _Unique_copy ( _FwdIt  _First,
_FwdIt  _Last,
_OutIt  _Dest,
_Pr  _Pred,
forward_iterator_tag   
)
inline
1858  { // find first element not before _Val, using _Pred
template<class _FwdIt , class _Ty , class _Diff , class _Pr >
_FwdIt _Upper_bound ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val,
_Pr  _Pred,
_Diff *   
)
inline
2558  { // sort median element to middle
2559  if (40 < _Last - _First)
2560  { // median of nine
2561  int _Step = (int)(_Last - _First + 1) / 8;
2562  cliext::_XMed3(_First, _First + _Step, _First + 2 * _Step);
2563  cliext::_XMed3(_Mid - _Step, _Mid, _Mid + _Step);
2564  cliext::_XMed3(_Last - 2 * _Step, _Last - _Step, _Last);
2565  cliext::_XMed3(_First + _Step, _Mid, _Last - _Step);
2566  }
2567  else
2568  cliext::_XMed3(_First, _Mid, _Last);
2569  }
2570 
2571 template<class _RanIt> inline
2572  _PAIR_TYPE(_RanIt) _XUnguarded_partition(_RanIt _First, _RanIt _Last)
2573  { // partition [_First, _Last), using operator<
_CRTIMP _In_opt_z_ const wchar_t _In_opt_z_ const wchar_t unsigned int
Definition: crtdefs.h:642
#define _PAIR_TYPE(iter_t)
Definition: memory:31
_FwdIt _Last
Definition: algorithm:1936
void _XMed3(_RanIt _First, _RanIt _Mid, _RanIt _Last)
Definition: algorithm:2546
template<class _FwdIt , class _Pr >
_FwdIt adjacent_find ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
74  { // find first unsigned char that matches _Val
75  _STLCLRDB_RANGE(_First, _Last);
76  _First = (const unsigned char *)std::memchr(_First, _Val,
77  _Last - _First);
78  return (_First == 0 ? _Last : _First);
79  }
_Check_return_ _CRTIMP _CONST_RETURN void *__cdecl memchr(_In_reads_bytes_opt_(_MaxCount) const void *_Buf, _In_ int _Val, _In_ size_t _MaxCount)
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt >
_FwdIt adjacent_find ( _FwdIt  _First,
_FwdIt  _Last 
)
inline
86  { // find first satisfying _Pred
template<class _InIt , class _Pr >
bool all_of ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
244  { // room for match, try it
template<class _InIt , class _Pr >
bool any_of ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
260  { // find first [_First2, _Last2) satisfying _Pred
261  _STLCLRDB_RANGE(_First1, _Last1);
262  _STLCLRDB_RANGE(_First2, _Last2);
264  return (cliext::search_unchecked(_Unchecked(_First1), _Unchecked(_Last1),
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_POINTER(first)
Definition: memory:221
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt1 search_unchecked(_FwdIt1 _First1, _FwdIt1 _Last1, _FwdIt2 _First2, _FwdIt2 _Last2)
Definition: algorithm:194
template<class _FwdIt , class _Ty , class _Pr >
bool binary_search ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val,
_Pr  _Pred 
)
inline
2662  { // order [_First, _Last), using operator<
2663  cliext::_XSort(_First, _Last, _Last - _First);
2664  }
2665 
2666 template<class _RanIt> inline
2667  void sort(_RanIt _First, _RanIt _Last)
void _XSort(_RanIt _First, _RanIt _Last, _Diff _Ideal)
Definition: algorithm:2630
_FwdIt _Last
Definition: algorithm:1936
void sort(_RanIt _First, _RanIt _Last, _Pr _Pred)
Definition: algorithm:3153
template<class _FwdIt , class _Ty >
bool binary_search ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val 
)
inline
2677  { // insertion sort [_First, _Last), using _Pred
template<class _InIt , class _OutIt , class _Pr >
_OutIt copy_if ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
327  { // no match, take big jump and back up as needed
328  _Oldfirst1 = _First1 + 1;
329  _First1 += _Count;
_Diff _Count
Definition: algorithm:1941
template<class _InIt , class _Pr >
iterator_traits<_InIt>::difference_type count_if ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
106  { // find first matching successor
107  for (_FwdIt _Firstb; (_Firstb = _First) != _Last && ++_First != _Last; )
108  if (*_Firstb == *_First)
109  return (_Firstb);
110  return (_Last);
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Ty , class _Pr >
pair<_FwdIt, _FwdIt> equal_range ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val,
_Pr  _Pred 
)
inline
2640  { // loop on second half
2641  cliext::_XSort(_First, _Mid.first, _Ideal);
2642  _First = _Mid.second;
2643  }
2644  else
2645  { // loop on first half
2646  cliext::_XSort(_Mid.second, _Last, _Ideal);
void _XSort(_RanIt _First, _RanIt _Last, _Diff _Ideal)
Definition: algorithm:2630
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Ty >
pair<_FwdIt, _FwdIt> equal_range ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val 
)
inline
2652  { // heap sort if too many divisions
2655  }
2656  else if (1 < _Count)
void make_heap_unchecked(_RanIt _First, _RanIt _Last)
Definition: algorithm:1702
void sort_heap_unchecked(_RanIt _First, _RanIt _Last)
Definition: algorithm:1760
_Diff _Count
Definition: algorithm:1941
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 find_end ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2,
_Pr  _Pred 
)
inline
796  { // copy omitting each matching _Val
797  for (; _First != _Last; ++_First)
798  if (!(*_First == _Val))
799  *_Dest++ = *_First;
800  return (_Dest);
801  }
802 
803 template<class _InIt,
804  class _OutIt,
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 find_end ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2 
)
inline
822  { // copy omitting each element satisfying _Pred
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 find_first_of ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2,
_Pr  _Pred 
)
inline
834  { // copy omitting each element satisfying _Pred
835  _STLCLRDB_RANGE(_First, _Last);
836  _STLCLRDB_POINTER(_Dest);
839  _Unchecked(_First), _Unchecked(_Last),
840  _Unchecked(_Dest), _Pred));
841  }
842 
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_POINTER(first)
Definition: memory:221
_OutIt remove_copy_if_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred)
Definition: algorithm:820
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 find_first_of ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2 
)
inline
848  { // remove each matching _Val
849  _First = cliext::find_unchecked(_First, _Last, _Val);
850  if (_First == _Last)
851  return (_First); // empty sequence, all done
852  else
_InIt find_unchecked(_InIt _First, _InIt _Last, const _Ty%_Val)
Definition: algorithm:37
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _Pr >
_InIt find_if ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
57  { // find first char that matches _Val
template<class _InIt , class _Pr >
_InIt find_if_not ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
301  { // find first _Count * _Val match, random-access iterators
302  if (_Count <= 0)
303  return (_First1);
304 
305  _FwdIt1 _Oldfirst1 = _First1;
_Diff _Count
Definition: algorithm:1941
template<class _InIt , class _Fn1 >
_Fn1 for_each ( _InIt  _First,
_InIt  _Last,
_Fn1  _Func 
)
inline
38  { // find first matching _Val
template<class _FwdIt , class _Fn0 >
void generate ( _FwdIt  _First,
_FwdIt  _Last,
_Fn0  _Func 
)
inline
1499  { // percolate _Hole to _Top or where _Val belongs, using operator<
template<class _OutIt , class _Diff , class _Fn0 >
_OutIt generate_n ( _OutIt  _Dest,
_Diff  _Count,
_Fn0  _Func 
)
inline
1503  { // move _Hole up to parent
1504  *(_First + _Hole) = *(_First + _Idx);
template<class _InIt1 , class _InIt2 , class _Pr >
bool includes ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_Pr  _Pred 
)
inline
3450  { // test if set [_First1, _Last1) in [_First2, _Last2), using _Pred
template<class _InIt1 , class _InIt2 >
bool includes ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2 
)
inline
3450  { // test if set [_First1, _Last1) in [_First2, _Last2), using _Pred
3451  _STLCLRDB_ORDER_PRED(_First1, _Last1, _Pred);
3452  _STLCLRDB_ORDER_PRED(_First2, _Last2, _Pred);
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_ORDER_PRED(first, last, pred)
Definition: memory:224
template<class _BidIt , class _Pr >
void inplace_merge ( _BidIt  _First,
_BidIt  _Mid,
_BidIt  _Last,
_Pr  _Pred 
)
inline
2978  { // temp buffer not big enough, divide and conquer
2979  cliext::_XStable_sort(_First, _Mid, _Count2, _Tempbuf);
2980  cliext::_XStable_sort(_Mid, _Last, _Count - _Count2, _Tempbuf);
2981  }
2982 
2983  cliext::_XBuffered_merge(_First, _Mid, _Last,
2984  _Count2, _Count - _Count2, _Tempbuf); // merge sorted halves
2985  }
void _XStable_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf)
Definition: algorithm:2926
void _XBuffered_merge(_BidIt _First, _BidIt _Mid, _BidIt _Last, _Diff _Count1, _Diff _Count2, _Temp_iterator< _Ty > _Tempbuf)
Definition: algorithm:2214
_Diff _Count
Definition: algorithm:1941
_FwdIt _Last
Definition: algorithm:1936
template<class _BidIt >
void inplace_merge ( _BidIt  _First,
_BidIt  _Mid,
_BidIt  _Last 
)
inline
2991  { // sort preserving order of equivalents, using operator<
_Iter::difference_type difference_type
Definition: xutility:373
template<class _RanIt , class _Pr >
bool is_heap ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred 
)
template<class _RanIt >
bool is_heap ( _RanIt  _First,
_RanIt  _Last 
)
template<class _RanIt , class _Pr >
_RanIt is_heap_until ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred 
)
template<class _RanIt >
_RanIt is_heap_until ( _RanIt  _First,
_RanIt  _Last 
)
template<class _InIt , class _Pr >
bool is_partitioned ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
574  { // swap *_Left and *_Right
template<class _FwdIt , class _Pr >
bool is_sorted ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
template<class _FwdIt >
bool is_sorted ( _FwdIt  _First,
_FwdIt  _Last 
)
inline
template<class _FwdIt , class _Pr >
_FwdIt is_sorted_until ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
template<class _FwdIt >
_FwdIt is_sorted_until ( _FwdIt  _First,
_FwdIt  _Last 
)
inline
template<class _FwdIt , class _Ty , class _Pr >
_FwdIt lower_bound ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val,
_Pr  _Pred 
)
inline
2530  { // found new earliest element, move to front
2531  cliext::copy_backward_unchecked(_First, _Next, ++_Next1);
2532  *_First = _Val;
2533  }
2534  else
2535  { // look for insertion point after first
2536  for (_BidIt _First1 = _Next1;
_BidIt2 copy_backward_unchecked(_BidIt1 _First, _BidIt1 _Last, _BidIt2 _Dest)
Definition: memory:514
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _FwdIt , class _Ty >
_FwdIt lower_bound ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val 
)
inline
2547  { // sort median of three elements to middle
template<class _RanIt , class _Pr >
void make_heap ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred 
)
inline
2458  { // left larger, cut it in half and partition right to match
2459  _Count1n = _Count1 / 2, _Count2n = 0;
2460  _Firstn = _First;
2461  cliext::advance(_Firstn, _Count1n);
2462  _Lastn = cliext::lower_bound_unchecked(_Mid, _Last,
_FwdIt lower_bound_unchecked(_FwdIt _First, _FwdIt _Last, _Ty%_Val)
Definition: algorithm:1797
void advance(_InIt_t%_Where, _Diff_t _Off)
Definition: xutility:694
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt >
void make_heap ( _RanIt  _First,
_RanIt  _Last 
)
inline
2467  { // right larger, cut it in half and partition left to match
2468  _Count1n = 0, _Count2n = _Count2 / 2;
2469  _Lastn = _Mid;
template<class _Ty >
_Ty() max ( _XSTD initializer_list< _Ty >  _Ilist)
inline
template<class _Ty , class _Pr >
const _Ty&() max ( const _Ty &  _Left,
const _Ty &  _Right,
_Pr  _Pred 
)
inline
template<class _Ty , class _Pr >
_Ty() max ( _XSTD initializer_list< _Ty >  _Ilist,
_Pr  _Pred 
)
inline
template<class _FwdIt , class _Pr >
_FwdIt max_element ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
template<class _FwdIt >
_FwdIt max_element ( _FwdIt  _First,
_FwdIt  _Last 
)
inline
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt merge ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
2717  { // sort median element to middle
2718  if (40 < _Last - _First)
2719  { // median of nine
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt merge ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest 
)
inline
2825  { // order [_First, _Last), using _Pred
2826  cliext::_XSort(_First, _Last, _Last - _First, _Pred);
2827  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
void _XSort(_RanIt _First, _RanIt _Last, _Diff _Ideal)
Definition: algorithm:2630
_FwdIt _Last
Definition: algorithm:1936
template<class _Ty >
_Ty() min ( _XSTD initializer_list< _Ty >  _Ilist)
inline
template<class _Ty , class _Pr >
const _Ty&() min ( const _Ty &  _Left,
const _Ty &  _Right,
_Pr  _Pred 
)
inline
template<class _Ty , class _Pr >
_Ty() min ( _XSTD initializer_list< _Ty >  _Ilist,
_Pr  _Pred 
)
inline
template<class _FwdIt , class _Pr >
_FwdIt min_element ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
template<class _FwdIt >
_FwdIt min_element ( _FwdIt  _First,
_FwdIt  _Last 
)
inline
template<class _Ty >
pair<const _Ty&, const _Ty&> minmax ( const _Ty &  _Left,
const _Ty &  _Right 
)
inline
template<class _Ty >
pair<_Ty, _Ty> minmax ( _XSTD initializer_list< _Ty >  _Ilist)
inline
template<class _Ty , class _Pr >
pair<const _Ty&, const _Ty&> minmax ( const _Ty &  _Left,
const _Ty &  _Right,
_Pr  _Pred 
)
inline
template<class _Ty , class _Pr >
pair<_Ty, _Ty> minmax ( _XSTD initializer_list< _Ty >  _Ilist,
_Pr  _Pred 
)
inline
template<class _FwdIt , class _Pr >
pair<_FwdIt, _FwdIt> minmax_element ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
template<class _FwdIt >
pair<_FwdIt, _FwdIt> minmax_element ( _FwdIt  _First,
_FwdIt  _Last 
)
inline
template<class _InIt1 , class _InIt2 , class _Pr >
pair<_InIt1, _InIt2> mismatch ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_Pr  _Pred 
)
inline
135  { // find first satisfying _Pred with successor
136  _STLCLRDB_RANGE(_First, _Last);
139  _Unchecked(_First), _Unchecked(_Last), _Pred));
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_POINTER(first)
Definition: memory:221
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
_FwdIt adjacent_find_unchecked(_FwdIt _First, _FwdIt _Last)
Definition: algorithm:105
template<class _InIt1 , class _InIt2 >
pair<_InIt1, _InIt2> mismatch ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2 
)
inline
206  { // room for match, try it
207  _FwdIt1 _Mid1 = _First1;
208  for (_FwdIt2 _Mid2 = _First2; ; ++_Mid1, ++_Mid2)
209  if (_Mid2 == _Last2)
210  return (_First1);
211  else if (!(*_Mid1 == *_Mid2))
template<class _BidIt , class _Pr >
bool next_permutation ( _BidIt  _First,
_BidIt  _Last,
_Pr  _Pred 
)
inline
template<class _BidIt >
bool next_permutation ( _BidIt  _First,
_BidIt  _Last 
)
inline
template<class _InIt , class _Pr >
bool none_of ( _InIt  _First,
_InIt  _Last,
_Pr  _Pred 
)
inline
280  { // found start of possible match, check it out
281  _FwdIt1 _Mid1 = _First1;
282 
283  for (_Diff2 _Count1 = _Count; ; )
284  if (--_Count1 == 0)
_Diff _Count
Definition: algorithm:1941
template<class _RanIt , class _Pr >
void nth_element ( _RanIt  _First,
_RanIt  _Nth,
_RanIt  _Last,
_Pr  _Pred 
)
inline
3405  { // test if all [_First1, _Last1) in [_First2, _Last2), using operator<
template<class _RanIt >
void nth_element ( _RanIt  _First,
_RanIt  _Nth,
_RanIt  _Last 
)
inline
3420  { // test if all [_First1, _Last1) in [_First2, _Last2), using operator<
template<class _RanIt , class _Pr >
void partial_sort ( _RanIt  _First,
_RanIt  _Mid,
_RanIt  _Last,
_Pr  _Pred 
)
inline
template<class _RanIt >
void partial_sort ( _RanIt  _First,
_RanIt  _Mid,
_RanIt  _Last 
)
inline
3329  { // copy [First1, _Last1) into [_First2, _Last2) using _Pred
template<class _InIt , class _RanIt , class _Pr >
_RanIt partial_sort_copy ( _InIt  _First1,
_InIt  _Last1,
_RanIt  _First2,
_RanIt  _Last2,
_Pr  _Pred 
)
inline
3360  { // order Nth element, using operator<
3361  _STLCLRDB_RANGE(_First, _Nth);
3362  _STLCLRDB_RANGE(_Nth, _Last);
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class _RanIt >
_RanIt partial_sort_copy ( _InIt  _First1,
_InIt  _Last1,
_RanIt  _First2,
_RanIt  _Last2 
)
inline
3372  { // order Nth element, using _Pred
template<class _FwdIt , class _Pr >
_FwdIt partition ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
2170  { // rotate [_First, _Last) using temp buffer
template<class _InIt , class _OutIt1 , class _OutIt2 , class _Pr >
pair<_OutIt1, _OutIt2> partition_copy ( _InIt  _First,
_InIt  _Last,
_OutIt1  _Dest1,
_OutIt2  _Dest2,
_Pr  _Pred 
)
inline
407  { // no match, take big jump and back up as needed
408  _Oldfirst1 = _First1 + 1;
409  _First1 += _Count;
410  }
_Diff _Count
Definition: algorithm:1941
template<class _FwdIt , class _Pr >
_FwdIt partition_point ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
606  { // transform [_First, _Last) with _Func
template<class _RanIt , class _Pr >
void pop_heap ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred 
)
inline
2435  { // merge [_First, _Mid) with [_Mid, _Last), using _Pred
template<class _RanIt >
void pop_heap ( _RanIt  _First,
_RanIt  _Last 
)
inline
2435  { // merge [_First, _Mid) with [_Mid, _Last), using _Pred
template<class _BidIt , class _Pr >
bool prev_permutation ( _BidIt  _First,
_BidIt  _Last,
_Pr  _Pred 
)
inline
template<class _BidIt >
bool prev_permutation ( _BidIt  _First,
_BidIt  _Last 
)
inline
template<class _RanIt , class _Pr >
void push_heap ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred 
)
inline
2345  { // merge [_First, _Mid) with [_Mid, _Last), using operator<
2346  _STLCLRDB_ORDER(_First, _Mid);
2347  _STLCLRDB_ORDER(_Mid, _Last);
2349  _Unchecked(_First), _Unchecked(_Mid), _Unchecked(_Last));
2350  }
2351 
2352  // TEMPLATE FUNCTION inplace_merge WITH PRED
#define _STLCLRDB_ORDER(first, last)
Definition: memory:223
void inplace_merge_unchecked(_BidIt _First, _BidIt _Mid, _BidIt _Last)
Definition: algorithm:2324
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt >
void push_heap ( _RanIt  _First,
_RanIt  _Last 
)
inline
2359  { // merge backwards to _Dest, using _Pred
template<class _RanIt , class _Fn1 >
void random_shuffle ( _RanIt  _First,
_RanIt  _Last,
_Fn1 &&  _Func 
)
inline
2075  { // copy merging ranges, both using operator<
template<class _RanIt >
void random_shuffle ( _RanIt  _First,
_RanIt  _Last 
)
inline
template<class _FwdIt , class _Ty >
_FwdIt remove ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val 
)
inline
1751  { // make [_First, _Last) into a heap, using _Pred
template<class _InIt , class _OutIt , class _Ty >
_OutIt remove_copy ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
const _Ty &  _Val 
)
inline
1591  { // percolate _Hole to _Bottom, then push _Val, using operator<
1592  _Diff _Top = _Hole;
1593  _Diff _Idx = 2 * _Hole + 2;
1594 
1595  for (; _Idx < _Bottom; _Idx = 2 * _Idx + 2)
1596  { // move _Hole down to larger child
template<class _InIt , class _OutIt , class _Pr >
_OutIt remove_copy_if ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
1671  { // pop *_First to *_Dest and reheap, using _Pred
_Iter::difference_type difference_type
Definition: xutility:373
template<class _FwdIt , class _Pr >
_FwdIt remove_if ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
1768  { // order heap by repeatedly popping, using operator<
1769  _STLCLRDB_RANGE(_First, _Last);
1770  _STLCLRDB_HEAP(_First, _Last);
1772  }
1773 
#define _STLCLRDB_HEAP(first, last)
Definition: algorithm:1489
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
void sort_heap_unchecked(_RanIt _First, _RanIt _Last)
Definition: algorithm:1760
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Ty >
void replace ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Oldval,
const _Ty &  _Newval 
)
inline
1234  { /* compute pseudo-random value */
template<class _InIt , class _OutIt , class _Ty >
_OutIt replace_copy ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
const _Ty &  _Oldval,
const _Ty &  _Newval 
)
inline
1279  { // shuffle [_First, _Last) using random function _Func
template<class _InIt , class _OutIt , class _Pr , class _Ty >
_OutIt replace_copy_if ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Pr  _Pred,
const _Ty &  _Val 
)
inline
1382  { // partition preserving order of equivalents, using _Pred
template<class _FwdIt , class _Pr , class _Ty >
void replace_if ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred,
const _Ty &  _Val 
)
inline
1253  { // assume unsigned long big enough for _Diff count
1254  unsigned long _Rm = _RANDOM_MAX;
1255  unsigned long _Rn = _Rand() & _RANDOM_MAX;
int _Rand(void)
Definition: algorithm:1233
template<class _BidIt , class _OutIt >
_OutIt reverse_copy ( _BidIt  _First,
_BidIt  _Last,
_OutIt  _Dest 
)
inline
1958  { // range straddles mid, find each end and return
template<class _FwdIt , class _OutIt >
_OutIt rotate_copy ( _FwdIt  _First,
_FwdIt  _Mid,
_FwdIt  _Last,
_OutIt  _Dest 
)
inline
2032  { // test if _Val equivalent to some element, using operator<
2033  _First = cliext::lower_bound_unchecked(_First, _Last, _Val);
2034  return (_First != _Last && !(_Val < *_First));
2035  }
2036 
_FwdIt lower_bound_unchecked(_FwdIt _First, _FwdIt _Last, _Ty%_Val)
Definition: algorithm:1797
_FwdIt const _Ty _Val
Definition: algorithm:1938
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt1 , class _FwdIt2 , class _Pr >
_FwdIt1 search ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2,
_Pr  _Pred 
)
inline
644  { // transform [_First1, _Last1) and [_First2, _Last2) with _Func
645  _STLCLRDB_RANGE(_First1, _Last1);
646  _STLCLRDB_POINTER(_First2);
647  _STLCLRDB_POINTER(_Dest);
#define _STLCLRDB_POINTER(first)
Definition: memory:221
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt1 search ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _First2,
_FwdIt2  _Last2 
)
inline
659  { // replace each matching _Oldval with _Newval
template<class _FwdIt1 , class _Diff2 , class _Ty , class _Pr >
_FwdIt1 search_n ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_Diff2  _Count,
const _Ty &  _Val,
_Pr  _Pred 
)
inline
743  { // copy replacing each satisfying _Pred with _Val
744  _STLCLRDB_RANGE(_First, _Last);
745  _STLCLRDB_POINTER(_Dest);
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_OutIt replace_copy_if_unchecked(_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred, const _Ty%_Val)
Definition: algorithm:729
#define _STLCLRDB_POINTER(first)
Definition: memory:221
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt1 , class _Diff2 , class _Ty >
_FwdIt1 search_n ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_Diff2  _Count,
const _Ty &  _Val 
)
inline
756  { // replace [_First, _Last) with _Func()
757  for (; _First != _Last; ++_First)
758  *_First = _Func();
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt set_difference ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
3732  { // find largest element, using operator<
3733  _STLCLRDB_RANGE(_First, _Last);
3735  _Unchecked(_First), _Unchecked(_Last)));
_FwdIt max_element_unchecked(_FwdIt _First, _FwdIt _Last)
Definition: algorithm:3720
_Iter_t _Unchecked(_Iter_t _Iter)
Definition: iterator:11
#define _STLCLRDB_RANGE(first, last)
Definition: memory:226
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt set_difference ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest 
)
inline
3807  { // permute and test for pure ascending, using operator<
3808  _BidIt _Next = _Last;
3809  if (_First == _Last || _First == --_Next)
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt set_intersection ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
3610  { // take set [_First2, _Last2) from [_First1, _Last1), using operator<
3611  _STLCLRDB_ORDER(_First1, _Last1);
3612  _STLCLRDB_ORDER(_First2, _Last2);
#define _STLCLRDB_ORDER(first, last)
Definition: memory:223
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt set_intersection ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest 
)
inline
3691  { // XOR sets [_First1, _Last1) and [_First2, _Last2), using _Pred
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt set_symmetric_difference ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
3864  { // pure descending, flip all
3865  cliext::reverse(_First, _Last);
3866  return (false);
3867  }
void reverse(_BidIt _First, _BidIt _Last)
Definition: algorithm:1105
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt set_symmetric_difference ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest 
)
inline
3940  { // pure ascending, flip all
3941  cliext::reverse(_First, _Last);
3942  return (false);
void reverse(_BidIt _First, _BidIt _Last)
Definition: algorithm:1105
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt1 , class _InIt2 , class _OutIt , class _Pr >
_OutIt set_union ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
3497  { // OR sets [_First1, _Last1) and [_First2, _Last2), using _Pred
template<class _InIt1 , class _InIt2 , class _OutIt >
_OutIt set_union ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_InIt2  _Last2,
_OutIt  _Dest 
)
inline
3562  { // AND sets [_First1, _Last1) and [_First2, _Last2), using _Pred
3563  for (; _First1 != _Last1 && _First2 != _Last2; )
3564  if (_STLCLRDB_LT_PRED(_Pred, *_First1, *_First2))
3565  ++_First1;
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
#define _STLCLRDB_LT_PRED(pred, left, right)
Definition: memory:219
template<class _RanIt , class _Urng >
void shuffle ( _RanIt  _First,
_RanIt  _Last,
_Urng &&  _Func 
)
inline
2091  { // copy merging ranges, both using operator<
template<class _RanIt , class _Pr >
void sort ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred 
)
inline
3153  { // temp buffer big enough, sort each half using buffer
3154  cliext::_XBuffered_merge_sort(_First, _Mid, _Count2,
3155  _Tempbuf, _Pred);
3156  cliext::_XBuffered_merge_sort(_Mid, _Last, _Count - _Count2,
3157  _Tempbuf, _Pred);
3158  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
void _XBuffered_merge_sort(_BidIt _First, _BidIt _Last, _Diff _Count, _Temp_iterator< _Ty > _Tempbuf)
Definition: algorithm:2872
_Diff _Count
Definition: algorithm:1941
_FwdIt _Last
Definition: algorithm:1936
template<class _RanIt >
void sort ( _RanIt  _First,
_RanIt  _Last 
)
inline
template<class _RanIt , class _Pr >
void sort_heap ( _RanIt  _First,
_RanIt  _Last,
_Pr  _Pred 
)
inline
2489  { // merge [_First, _Mid) with [_Mid, _Last), using _Pred
template<class _RanIt >
void sort_heap ( _RanIt  _First,
_RanIt  _Last 
)
inline
2494  { // merge nontrivial sequence
2495  _Diff _Count1 = 0;
template<class _BidIt , class _Pr >
_BidIt stable_partition ( _BidIt  _First,
_BidIt  _Last,
_Pr  _Pred 
)
inline
2273  { // merge [_First, _Mid) with [_Mid, _Last), using operator<
template<class _BidIt , class _Pr >
void stable_sort ( _BidIt  _First,
_BidIt  _Last,
_Pr  _Pred 
)
inline
3285  { // copy [First1, _Last1) into [_First2, _Last2), using operator<
template<class _BidIt >
void stable_sort ( _BidIt  _First,
_BidIt  _Last 
)
inline
3285  { // copy [First1, _Last1) into [_First2, _Last2), using operator<
template<class _FwdIt1 , class _FwdIt2 >
_FwdIt2 swap_ranges ( _FwdIt1  _First1,
_FwdIt1  _Last1,
_FwdIt2  _Dest 
)
inline
873  { // remove each satisfying _Pred
template<class _InIt , class _OutIt , class _Fn1 >
_OutIt transform ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Fn1  _Func 
)
inline
964  { // copy compressing pairs that match, forward iterators
965  _FwdIt _Firstb = _First;
template<class _InIt1 , class _InIt2 , class _OutIt , class _Fn2 >
_OutIt transform ( _InIt1  _First1,
_InIt1  _Last1,
_InIt2  _First2,
_OutIt  _Dest,
_Fn2  _Func 
)
inline
1063  { // copy compressing pairs satisfying _Pred
1064  return (_First == _Last ? _Dest
1065  : _Unique_copy(_First, _Last, _Dest, _Pred, _Iter_category(_First)));
1066  }
1067 
1068 template<class _InIt,
1069  class _OutIt,
1070  class _Pr> inline
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
iterator_traits< _Iter_t >::iterator_category _Iter_category(_Iter_t)
Definition: xutility:654
_OutIt _Unique_copy(_InIt _First, _InIt _Last, _OutIt _Dest, _Pr _Pred, _Ty *)
Definition: algorithm:1814
_FwdIt _Last
Definition: algorithm:1936
template<class _FwdIt , class _Pr >
_FwdIt unique ( _FwdIt  _First,
_FwdIt  _Last,
_Pr  _Pred 
)
inline
1799  { // find first element not before _Val, using operator<
_Iter::difference_type difference_type
Definition: xutility:373
template<class _FwdIt >
_FwdIt unique ( _FwdIt  _First,
_FwdIt  _Last 
)
inline
1806  { // divide and conquer, find half that contains answer
1807  _Diff _Count2 = _Count / 2;
_Diff _Count
Definition: algorithm:1941
template<class _InIt , class _OutIt , class _Pr >
_OutIt unique_copy ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest,
_Pr  _Pred 
)
inline
1869  { // find first element that _Val is before, using operator<
template<class _InIt , class _OutIt >
_OutIt unique_copy ( _InIt  _First,
_InIt  _Last,
_OutIt  _Dest 
)
inline
1927  { // find first element that _Val is before, using _Pred
template<class _FwdIt , class _Ty , class _Pr >
_FwdIt upper_bound ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val,
_Pr  _Pred 
)
inline
2592  { // partition
template<class _FwdIt , class _Ty >
_FwdIt upper_bound ( _FwdIt  _First,
_FwdIt  _Last,
const _Ty &  _Val 
)
inline
2592  { // partition
2593  for (; _Gfirst < _Last; ++_Gfirst)
_RanIt _Gfirst
Definition: algorithm:2588
_FwdIt _Last
Definition: algorithm:1936

Variable Documentation

_STD_BEGIN const int _ISORT_MAX = 32
const _Ty & _Right
Initial value:
{
return (_DEBUG_LT(_Left, _Right) ? _Right : _Left)
#define _DEBUG_LT(x, y)
Definition: xutility:461
const _Ty & _Right
Definition: algorithm:4087
const _Ty& _Right
Initial value:
{
return (_DEBUG_LT(_Right, _Left) ? _Right : _Left)
#define _DEBUG_LT(x, y)
Definition: xutility:461
const _Ty & _Right
Definition: algorithm:4087