66 template<
typename _IIter,
typename _Function>
70 {
return _GLIBCXX_STD_A::for_each(__begin, __end, __f); }
74 template<
typename _IIter,
typename _Function,
typename _IteratorTag>
81 template<
typename _RAIter,
typename _Function>
83 __for_each_switch(_RAIter __begin, _RAIter __end,
106 template<
typename _Iterator,
typename _Function>
108 for_each(_Iterator __begin, _Iterator __end,
_Function __f,
117 template<
typename _Iterator,
typename _Function>
119 for_each(_Iterator __begin, _Iterator __end,
_Function __f)
128 template<
typename _IIter,
typename _Tp>
132 {
return _GLIBCXX_STD_A::find(__begin, __end, __val); }
135 template<
typename _IIter,
typename _Tp,
typename _IteratorTag>
137 __find_switch(
_IIter __begin,
_IIter __end,
const _Tp& __val,
139 {
return _GLIBCXX_STD_A::find(__begin, __end, __val); }
142 template<
typename _RAIter,
typename _Tp>
144 __find_switch(_RAIter __begin, _RAIter __end,
148 typedef typename _TraitsType::value_type _ValueType;
154 _ValueType,
const _Tp&,
bool>
157 __begin, __end, __begin, __comp,
161 return _GLIBCXX_STD_A::find(__begin, __end, __val);
165 template<
typename _IIter,
typename _Tp>
175 template<
typename _IIter,
typename _Predicate>
179 {
return _GLIBCXX_STD_A::find_if(__begin, __end,
__pred); }
182 template<
typename _IIter,
typename _Predicate,
typename _IteratorTag>
186 {
return _GLIBCXX_STD_A::find_if(__begin, __end,
__pred); }
189 template<
typename _RAIter,
typename _Predicate>
191 __find_if_switch(_RAIter __begin, _RAIter __end,
197 __find_if_selector()).first;
199 return _GLIBCXX_STD_A::find_if(__begin, __end,
__pred);
203 template<
typename _IIter,
typename _Predicate>
213 template<
typename _IIter,
typename _FIterator>
222 template<
typename _IIter,
typename _FIterator,
228 {
return _GLIBCXX_STD_A::find_first_of(
232 template<
typename _IIter,
typename _FIterator,
242 template<
typename _RAIter,
typename _FIterator,
245 __find_first_of_switch(_RAIter
__begin1,
258 template<
typename _IIter,
typename _FIterator,
269 template<
typename _IIter,
typename _FIterator,
286 template<
typename _IIter,
typename _FIterator>
293 typedef typename _IIterTraits::value_type
_IValueType;
294 typedef typename _FIterTraits::value_type
_FValueType;
301 template<
typename _IIter,
typename _OutputIterator>
302 inline _OutputIterator
308 template<
typename _IIter,
typename _OutputIterator,
310 inline _OutputIterator
316 template<
typename _IIter,
typename _OutputIterator,
318 inline _OutputIterator
322 {
return _GLIBCXX_STD_A::unique_copy(__begin, __last,
__out,
__pred); }
328 __unique_copy_switch(_RAIter __begin, _RAIter __last,
338 return _GLIBCXX_STD_A::unique_copy(__begin, __last,
__out,
__pred);
342 template<
typename _IIter,
typename _OutputIterator>
343 inline _OutputIterator
349 typedef typename _IIterTraits::value_type _ValueType;
352 return __unique_copy_switch(
358 template<
typename _IIter,
typename _OutputIterator,
typename _Predicate>
359 inline _OutputIterator
368 return __unique_copy_switch(
375 typename _OutputIterator>
376 inline _OutputIterator
380 {
return _GLIBCXX_STD_A::set_union(
385 typename _OutputIterator,
typename _Predicate>
386 inline _OutputIterator
398 inline _OutputIterator
421 return __gnu_parallel::__parallel_set_union(
430 typename _OutputIterator>
431 inline _OutputIterator
438 typedef typename _IIterTraits1::iterator_category
440 typedef typename _IIterTraits2::iterator_category
443 typedef typename _IIterTraits1::value_type
_ValueType1;
444 typedef typename _IIterTraits2::value_type
_ValueType2;
446 return __set_union_switch(
454 typename _OutputIterator,
typename _Predicate>
455 inline _OutputIterator
463 typedef typename _IIterTraits1::iterator_category
465 typedef typename _IIterTraits2::iterator_category
469 return __set_union_switch(
476 typename _OutputIterator>
477 inline _OutputIterator
486 typename _OutputIterator,
typename _Predicate>
487 inline _OutputIterator
492 {
return _GLIBCXX_STD_A::set_intersection(
497 typename _Predicate,
typename _OutputIterator,
500 inline _OutputIterator
527 return __gnu_parallel::__parallel_set_intersection(
530 return _GLIBCXX_STD_A::set_intersection(
536 typename _OutputIterator>
537 inline _OutputIterator
540 _OutputIterator
__out)
545 typedef typename _IIterTraits1::iterator_category
547 typedef typename _IIterTraits2::iterator_category
550 typedef typename _IIterTraits1::value_type
_ValueType1;
551 typedef typename _IIterTraits2::value_type
_ValueType2;
553 return __set_intersection_switch(
560 typename _OutputIterator,
typename _Predicate>
561 inline _OutputIterator
569 typedef typename _IIterTraits1::iterator_category
571 typedef typename _IIterTraits2::iterator_category
575 return __set_intersection_switch(
582 typename _OutputIterator>
583 inline _OutputIterator
586 _OutputIterator
__out,
588 {
return _GLIBCXX_STD_A::set_symmetric_difference(
593 typename _OutputIterator,
typename _Predicate>
594 inline _OutputIterator
599 {
return _GLIBCXX_STD_A::set_symmetric_difference(
604 typename _Predicate,
typename _OutputIterator,
607 inline _OutputIterator
608 __set_symmetric_difference_switch(
612 {
return _GLIBCXX_STD_A::set_symmetric_difference(
634 return __gnu_parallel::__parallel_set_symmetric_difference(
637 return _GLIBCXX_STD_A::set_symmetric_difference(
643 typename _OutputIterator>
644 inline _OutputIterator
647 _OutputIterator
__out)
652 typedef typename _IIterTraits1::iterator_category
654 typedef typename _IIterTraits2::iterator_category
657 typedef typename _IIterTraits1::value_type
_ValueType1;
658 typedef typename _IIterTraits2::value_type
_ValueType2;
660 return __set_symmetric_difference_switch(
668 typename _OutputIterator,
typename _Predicate>
669 inline _OutputIterator
677 typedef typename _IIterTraits1::iterator_category
679 typedef typename _IIterTraits2::iterator_category
683 return __set_symmetric_difference_switch(
690 typename _OutputIterator>
691 inline _OutputIterator
695 {
return _GLIBCXX_STD_A::set_difference(
700 typename _OutputIterator,
typename _Predicate>
701 inline _OutputIterator
713 inline _OutputIterator
718 {
return _GLIBCXX_STD_A::set_difference(
739 return __gnu_parallel::__parallel_set_difference(
742 return _GLIBCXX_STD_A::set_difference(
748 typename _OutputIterator>
749 inline _OutputIterator
752 _OutputIterator
__out)
757 typedef typename _IIterTraits1::iterator_category
759 typedef typename _IIterTraits2::iterator_category
762 typedef typename _IIterTraits1::value_type
_ValueType1;
763 typedef typename _IIterTraits2::value_type
_ValueType2;
765 return __set_difference_switch(
773 typename _OutputIterator,
typename _Predicate>
774 inline _OutputIterator
782 typedef typename _IIterTraits1::iterator_category
784 typedef typename _IIterTraits2::iterator_category
788 return __set_difference_switch(
794 template<
typename _FIterator>
796 adjacent_find(_FIterator __begin, _FIterator __end,
798 {
return _GLIBCXX_STD_A::adjacent_find(__begin, __end); }
801 template<
typename _FIterator,
typename _BinaryPredicate>
803 adjacent_find(_FIterator __begin, _FIterator __end,
806 {
return _GLIBCXX_STD_A::adjacent_find(__begin, __end,
__binary_pred); }
809 template<
typename _RAIter>
811 __adjacent_find_switch(_RAIter __begin, _RAIter __end,
815 typedef typename _TraitsType::value_type _ValueType;
824 if (
__spot == (__end - 1))
834 template<
typename _FIterator,
typename _IteratorTag>
836 __adjacent_find_switch(_FIterator __begin, _FIterator __end,
841 template<
typename _FIterator>
843 adjacent_find(_FIterator __begin, _FIterator __end)
854 __adjacent_find_switch(_FIterator __begin, _FIterator __end,
856 {
return adjacent_find(__begin, __end,
__pred,
860 template<
typename _RAIter,
typename _BinaryPredicate>
862 __adjacent_find_switch(_RAIter __begin, _RAIter __end,
868 __adjacent_find_selector()).first;
870 return adjacent_find(__begin, __end,
__pred,
875 template<
typename _FIterator,
typename _BinaryPredicate>
877 adjacent_find(_FIterator __begin, _FIterator __end,
882 return __adjacent_find_switch(__begin, __end,
__pred,
887 template<
typename _IIter,
typename _Tp>
888 inline typename iterator_traits<_IIter>::difference_type
891 {
return _GLIBCXX_STD_A::count(__begin, __end, __value); }
894 template<
typename _RAIter,
typename _Tp>
895 typename iterator_traits<_RAIter>::difference_type
896 __count_switch(_RAIter __begin, _RAIter __end,
901 typedef typename _TraitsType::value_type _ValueType;
902 typedef typename _TraitsType::difference_type _DifferenceType;
906 static_cast<_SequenceIndex
>(__end - __begin)
912 _DifferenceType
__res = 0;
921 return count(__begin, __end, __value,
926 template<
typename _IIter,
typename _Tp,
typename _IteratorTag>
927 inline typename iterator_traits<_IIter>::difference_type
928 __count_switch(
_IIter __begin,
_IIter __end,
const _Tp& __value,
934 template<
typename _IIter,
typename _Tp>
935 inline typename iterator_traits<_IIter>::difference_type
945 template<
typename _IIter,
typename _Tp>
946 inline typename iterator_traits<_IIter>::difference_type
956 template<
typename _IIter,
typename _Predicate>
957 inline typename iterator_traits<_IIter>::difference_type
960 {
return _GLIBCXX_STD_A::count_if(__begin, __end,
__pred); }
963 template<
typename _RAIter,
typename _Predicate>
964 typename iterator_traits<_RAIter>::difference_type
965 __count_if_switch(_RAIter __begin, _RAIter __end,
970 typedef typename _TraitsType::value_type _ValueType;
971 typedef typename _TraitsType::difference_type _DifferenceType;
975 static_cast<_SequenceIndex
>(__end - __begin)
979 _DifferenceType
__res = 0;
981 __count_if_selector<_RAIter, _DifferenceType>
991 return count_if(__begin, __end,
__pred,
996 template<
typename _IIter,
typename _Predicate,
typename _IteratorTag>
997 inline typename iterator_traits<_IIter>::difference_type
1000 {
return count_if(__begin, __end,
__pred,
1004 template<
typename _IIter,
typename _Predicate>
1005 inline typename iterator_traits<_IIter>::difference_type
1015 template<
typename _IIter,
typename _Predicate>
1016 inline typename iterator_traits<_IIter>::difference_type
1026 template<
typename _FIterator1,
typename _FIterator2>
1034 template<
typename _RAIter1,
typename _RAIter2>
1041 typedef typename _Iterator1Traits::value_type
_ValueType1;
1043 typedef typename _Iterator2Traits::value_type
_ValueType2;
1068 template<
typename _FIterator1,
typename _FIterator2>
1089 {
return _GLIBCXX_STD_A::search(
1139 template<
typename _FIterator,
typename _Integer,
typename _Tp>
1141 search_n(_FIterator __begin, _FIterator __end,
_Integer __count,
1143 {
return _GLIBCXX_STD_A::search_n(__begin, __end, __count, __val); }
1146 template<
typename _FIterator,
typename _Integer,
typename _Tp,
1149 search_n(_FIterator __begin, _FIterator __end,
_Integer __count,
1152 {
return _GLIBCXX_STD_A::search_n(
1156 template<
typename _FIterator,
typename _Integer,
typename _Tp>
1158 search_n(_FIterator __begin, _FIterator __end,
_Integer __count,
1161 typedef typename iterator_traits<_FIterator>::value_type _ValueType;
1162 return __gnu_parallel::search_n(__begin, __end, __count, __val,
1167 template<
typename _RAIter,
typename _Integer,
1170 __search_n_switch(_RAIter __begin, _RAIter __end,
_Integer __count,
1183 return _GLIBCXX_STD_A::search_n(__begin, __end, __count, __val,
1188 template<
typename _FIterator,
typename _Integer,
typename _Tp,
1191 __search_n_switch(_FIterator __begin, _FIterator __end,
_Integer __count,
1194 {
return _GLIBCXX_STD_A::search_n(__begin, __end, __count, __val,
1198 template<
typename _FIterator,
typename _Integer,
typename _Tp,
1201 search_n(_FIterator __begin, _FIterator __end,
_Integer __count,
1204 return __search_n_switch(__begin, __end, __count, __val,
__binary_pred,
1206 iterator_category());
1211 template<
typename _IIter,
typename _OutputIterator,
1213 inline _OutputIterator
1262 template<
typename _IIter,
typename _OutputIterator,
1264 inline _OutputIterator
1279 template<
typename _IIter,
typename _OutputIterator,
1281 inline _OutputIterator
1298 inline _OutputIterator
1346 inline _OutputIterator
1356 inline _OutputIterator
1363 typedef typename _IIterTraits1::iterator_category
1366 typedef typename _IIterTraits2::iterator_category
1371 return __transform2_switch(
1379 inline _OutputIterator
1385 typedef typename _IIterTraits1::iterator_category
1388 typedef typename _IIterTraits2::iterator_category
1393 return __transform2_switch(
1399 template<
typename _FIterator,
typename _Tp>
1401 replace(_FIterator __begin, _FIterator __end,
const _Tp&
__old_value,
1406 template<
typename _FIterator,
typename _Tp,
typename _IteratorTag>
1408 __replace_switch(_FIterator __begin, _FIterator __end,
1415 template<
typename _RAIter,
typename _Tp>
1417 __replace_switch(_RAIter __begin, _RAIter __end,
1428 template<
typename _FIterator,
typename _Tp>
1430 replace(_FIterator __begin, _FIterator __end,
const _Tp&
__old_value,
1441 template<
typename _FIterator,
typename _Tp>
1443 replace(_FIterator __begin, _FIterator __end,
const _Tp&
__old_value,
1454 template<
typename _FIterator,
typename _Predicate,
typename _Tp>
1456 replace_if(_FIterator __begin, _FIterator __end, _Predicate
__pred,
1461 template<
typename _FIterator,
typename _Predicate,
typename _Tp,
1464 __replace_if_switch(_FIterator __begin, _FIterator __end,
1470 template<
typename _RAIter,
typename _Predicate,
typename _Tp>
1472 __replace_if_switch(_RAIter __begin, _RAIter __end,
1484 __replace_if_selector<_RAIter, _Predicate, _Tp>
1498 template<
typename _FIterator,
typename _Predicate,
typename _Tp>
1500 replace_if(_FIterator __begin, _FIterator __end,
1510 template<
typename _FIterator,
typename _Predicate,
typename _Tp>
1512 replace_if(_FIterator __begin, _FIterator __end,
1522 template<
typename _FIterator,
typename _Generator>
1526 { _GLIBCXX_STD_A::generate(__begin, __end,
__gen); }
1529 template<
typename _FIterator,
typename _Generator,
typename _IteratorTag>
1531 __generate_switch(_FIterator __begin, _FIterator __end,
_Generator __gen,
1536 template<
typename _RAIter,
typename _Generator>
1538 __generate_switch(_RAIter __begin, _RAIter __end,
1561 template<
typename _FIterator,
typename _Generator>
1563 generate(_FIterator __begin, _FIterator __end,
1572 template<
typename _FIterator,
typename _Generator>
1583 template<
typename _OutputIterator,
typename _Size,
typename _Generator>
1584 inline _OutputIterator
1587 {
return _GLIBCXX_STD_A::generate_n(__begin, __n,
__gen); }
1590 template<
typename _OutputIterator,
typename _Size,
typename _Generator,
1592 inline _OutputIterator
1593 __generate_n_switch(_OutputIterator __begin, _Size __n,
_Generator __gen,
1595 {
return generate_n(__begin, __n,
__gen,
1599 template<
typename _RAIter,
typename _Size,
typename _Generator>
1610 template<
typename _OutputIterator,
typename _Size,
typename _Generator>
1611 inline _OutputIterator
1621 template<
typename _OutputIterator,
typename _Size,
typename _Generator>
1622 inline _OutputIterator
1632 template<
typename _RAIter>
1634 random_shuffle(_RAIter __begin, _RAIter __end,
1636 { _GLIBCXX_STD_A::random_shuffle(__begin, __end); }
1639 template<
typename _RAIter,
typename _RandomNumberGenerator>
1641 random_shuffle(_RAIter __begin, _RAIter __end,
1644 { _GLIBCXX_STD_A::random_shuffle(__begin, __end,
__rand); }
1648 template<
typename _MustBeInt =
int>
1657 template<
typename _RAIter>
1659 random_shuffle(_RAIter __begin, _RAIter __end)
1663 __gnu_parallel::random_shuffle(__begin, __end, __r);
1667 template<
typename _RAIter,
typename _RandomNumberGenerator>
1669 random_shuffle(_RAIter __begin, _RAIter __end,
1676 if (__begin == __end)
1687 template<
typename _FIterator,
typename _Predicate>
1689 partition(_FIterator __begin, _FIterator __end,
1691 {
return _GLIBCXX_STD_A::partition(__begin, __end, __pred); }
1694 template<
typename _FIterator,
typename _Predicate,
typename _IteratorTag>
1696 __partition_switch(_FIterator __begin, _FIterator __end,
1697 _Predicate __pred, _IteratorTag)
1698 {
return partition(__begin, __end, __pred,
1702 template<
typename _RAIter,
typename _Predicate>
1704 __partition_switch(_RAIter __begin, _RAIter __end,
1705 _Predicate __pred, random_access_iterator_tag)
1712 difference_type _DifferenceType;
1715 __gnu_parallel::__get_max_threads());
1716 return __begin + __middle;
1719 return partition(__begin, __end, __pred,
1724 template<
typename _FIterator,
typename _Predicate>
1726 partition(_FIterator __begin, _FIterator __end, _Predicate __pred)
1728 typedef iterator_traits<_FIterator> _TraitsType;
1729 typedef typename _TraitsType::iterator_category _IteratorCategory;
1730 return __partition_switch(__begin, __end, __pred, _IteratorCategory());
1736 template<
typename _RAIter>
1738 sort(_RAIter __begin, _RAIter __end,
1740 { _GLIBCXX_STD_A::sort(__begin, __end); }
1743 template<
typename _RAIter,
typename _Compare>
1745 sort(_RAIter __begin, _RAIter __end, _Compare __comp,
1747 { _GLIBCXX_STD_A::sort<_RAIter, _Compare>(__begin, __end,
1751 template<
typename _RAIter,
typename _Compare,
1754 sort(_RAIter __begin, _RAIter __end, _Compare __comp,
1755 _Parallelism __parallelism)
1757 typedef iterator_traits<_RAIter> _TraitsType;
1758 typedef typename _TraitsType::value_type _ValueType;
1760 if (__begin != __end)
1765 __gnu_parallel::__parallel_sort<false>(
1766 __begin, __end, __comp, __parallelism);
1773 template<
typename _RAIter>
1775 sort(_RAIter __begin, _RAIter __end)
1777 typedef iterator_traits<_RAIter> _TraitsType;
1778 typedef typename _TraitsType::value_type _ValueType;
1784 template<
typename _RAIter>
1786 sort(_RAIter __begin, _RAIter __end,
1789 typedef iterator_traits<_RAIter> _TraitsType;
1790 typedef typename _TraitsType::value_type _ValueType;
1795 template<
typename _RAIter>
1797 sort(_RAIter __begin, _RAIter __end,
1800 typedef iterator_traits<_RAIter> _TraitsType;
1801 typedef typename _TraitsType::value_type _ValueType;
1806 template<
typename _RAIter>
1808 sort(_RAIter __begin, _RAIter __end,
1811 typedef iterator_traits<_RAIter> _TraitsType;
1812 typedef typename _TraitsType::value_type _ValueType;
1817 template<
typename _RAIter>
1819 sort(_RAIter __begin, _RAIter __end,
1822 typedef iterator_traits<_RAIter> _TraitsType;
1823 typedef typename _TraitsType::value_type _ValueType;
1828 template<
typename _RAIter>
1830 sort(_RAIter __begin, _RAIter __end,
1833 typedef iterator_traits<_RAIter> _TraitsType;
1834 typedef typename _TraitsType::value_type _ValueType;
1839 template<
typename _RAIter>
1841 sort(_RAIter __begin, _RAIter __end,
1844 typedef iterator_traits<_RAIter> _TraitsType;
1845 typedef typename _TraitsType::value_type _ValueType;
1850 template<
typename _RAIter>
1852 sort(_RAIter __begin, _RAIter __end,
1855 typedef iterator_traits<_RAIter> _TraitsType;
1856 typedef typename _TraitsType::value_type _ValueType;
1861 template<
typename _RAIter,
typename _Compare>
1863 sort(_RAIter __begin, _RAIter __end, _Compare __comp)
1865 typedef iterator_traits<_RAIter> _TraitsType;
1866 typedef typename _TraitsType::value_type _ValueType;
1875 template<
typename _RAIter>
1877 stable_sort(_RAIter __begin, _RAIter __end,
1879 { _GLIBCXX_STD_A::stable_sort(__begin, __end); }
1882 template<
typename _RAIter,
typename _Compare>
1884 stable_sort(_RAIter __begin, _RAIter __end,
1886 { _GLIBCXX_STD_A::stable_sort<_RAIter, _Compare>(
1887 __begin, __end, __comp); }
1890 template<
typename _RAIter,
typename _Compare,
1893 stable_sort(_RAIter __begin, _RAIter __end,
1894 _Compare __comp, _Parallelism __parallelism)
1896 typedef iterator_traits<_RAIter> _TraitsType;
1897 typedef typename _TraitsType::value_type _ValueType;
1899 if (__begin != __end)
1904 __gnu_parallel::__parallel_sort<true>(
1905 __begin, __end, __comp, __parallelism);
1907 stable_sort(__begin, __end, __comp,
1913 template<
typename _RAIter>
1915 stable_sort(_RAIter __begin, _RAIter __end)
1917 typedef iterator_traits<_RAIter> _TraitsType;
1918 typedef typename _TraitsType::value_type _ValueType;
1924 template<
typename _RAIter>
1926 stable_sort(_RAIter __begin, _RAIter __end,
1929 typedef iterator_traits<_RAIter> _TraitsType;
1930 typedef typename _TraitsType::value_type _ValueType;
1935 template<
typename _RAIter>
1937 stable_sort(_RAIter __begin, _RAIter __end,
1940 typedef iterator_traits<_RAIter> _TraitsType;
1941 typedef typename _TraitsType::value_type _ValueType;
1946 template<
typename _RAIter>
1948 stable_sort(_RAIter __begin, _RAIter __end,
1951 typedef iterator_traits<_RAIter> _TraitsType;
1952 typedef typename _TraitsType::value_type _ValueType;
1957 template<
typename _RAIter>
1959 stable_sort(_RAIter __begin, _RAIter __end,
1962 typedef iterator_traits<_RAIter> _TraitsType;
1963 typedef typename _TraitsType::value_type _ValueType;
1968 template<
typename _RAIter>
1970 stable_sort(_RAIter __begin, _RAIter __end,
1973 typedef iterator_traits<_RAIter> _TraitsType;
1974 typedef typename _TraitsType::value_type _ValueType;
1979 template<
typename _RAIter,
typename _Compare>
1981 stable_sort(_RAIter __begin, _RAIter __end,
1984 typedef iterator_traits<_RAIter> _TraitsType;
1985 typedef typename _TraitsType::value_type _ValueType;
1991 template<
typename _IIter1,
typename _IIter2,
1992 typename _OutputIterator>
1993 inline _OutputIterator
1994 merge(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2,
1995 _IIter2 __end2, _OutputIterator __result,
1997 {
return _GLIBCXX_STD_A::merge(
1998 __begin1, __end1, __begin2, __end2, __result); }
2001 template<
typename _IIter1,
typename _IIter2,
2002 typename _OutputIterator,
typename _Compare>
2003 inline _OutputIterator
2004 merge(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2,
2005 _IIter2 __end2, _OutputIterator __result, _Compare __comp,
2007 {
return _GLIBCXX_STD_A::merge(
2008 __begin1, __end1, __begin2, __end2, __result, __comp); }
2011 template<
typename _IIter1,
typename _IIter2,
typename _OutputIterator,
2012 typename _Compare,
typename _IteratorTag1,
2013 typename _IteratorTag2,
typename _IteratorTag3>
2014 inline _OutputIterator
2015 __merge_switch(_IIter1 __begin1, _IIter1 __end1,
2016 _IIter2 __begin2, _IIter2 __end2,
2017 _OutputIterator __result, _Compare __comp,
2018 _IteratorTag1, _IteratorTag2, _IteratorTag3)
2019 {
return _GLIBCXX_STD_A::merge(__begin1, __end1, __begin2, __end2,
2020 __result, __comp); }
2023 template<
typename _IIter1,
typename _IIter2,
2024 typename _OutputIterator,
typename _Compare>
2026 __merge_switch(_IIter1 __begin1, _IIter1 __end1,
2027 _IIter2 __begin2, _IIter2 __end2,
2028 _OutputIterator __result, _Compare __comp,
2029 random_access_iterator_tag, random_access_iterator_tag,
2030 random_access_iterator_tag)
2038 __begin1, __end1, __begin2, __end2, __result,
2039 (__end1 - __begin1) + (__end2 - __begin2), __comp);
2042 __begin1, __end1, __begin2, __end2, __result,
2043 (__end1 - __begin1) + (__end2 - __begin2), __comp);
2047 template<
typename _IIter1,
typename _IIter2,
2048 typename _OutputIterator,
typename _Compare>
2049 inline _OutputIterator
2050 merge(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2,
2051 _IIter2 __end2, _OutputIterator __result, _Compare __comp)
2053 typedef typename iterator_traits<_IIter1>::value_type _ValueType;
2058 typedef typename _IIterTraits1::iterator_category
2060 typedef typename _IIterTraits2::iterator_category
2062 typedef typename _OIterTraits::iterator_category _OIterCategory;
2064 return __merge_switch(
2065 __begin1, __end1, __begin2, __end2, __result, __comp,
2066 _IIterCategory1(), _IIterCategory2(), _OIterCategory());
2071 template<
typename _IIter1,
typename _IIter2,
2072 typename _OutputIterator>
2073 inline _OutputIterator
2074 merge(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2,
2075 _IIter2 __end2, _OutputIterator __result)
2079 typedef typename _Iterator1Traits::value_type _ValueType1;
2080 typedef typename _Iterator2Traits::value_type _ValueType2;
2082 return __gnu_parallel::merge(__begin1, __end1, __begin2, __end2,
2087 template<
typename _RAIter>
2089 nth_element(_RAIter __begin, _RAIter __nth,
2091 {
return _GLIBCXX_STD_A::nth_element(__begin, __nth, __end); }
2094 template<
typename _RAIter,
typename _Compare>
2096 nth_element(_RAIter __begin, _RAIter __nth,
2097 _RAIter __end, _Compare __comp,
2099 {
return _GLIBCXX_STD_A::nth_element(__begin, __nth, __end, __comp); }
2102 template<
typename _RAIter,
typename _Compare>
2104 nth_element(_RAIter __begin, _RAIter __nth,
2105 _RAIter __end, _Compare __comp)
2112 nth_element(__begin, __nth, __end, __comp,
2117 template<
typename _RAIter>
2119 nth_element(_RAIter __begin, _RAIter __nth,
2122 typedef iterator_traits<_RAIter> _TraitsType;
2123 typedef typename _TraitsType::value_type _ValueType;
2124 __gnu_parallel::nth_element(__begin, __nth, __end,
2129 template<
typename _RAIter,
typename _Compare>
2131 partial_sort(_RAIter __begin, _RAIter __middle,
2132 _RAIter __end, _Compare __comp,
2134 { _GLIBCXX_STD_A::partial_sort(__begin, __middle, __end, __comp); }
2137 template<
typename _RAIter>
2139 partial_sort(_RAIter __begin, _RAIter __middle,
2141 { _GLIBCXX_STD_A::partial_sort(__begin, __middle, __end); }
2144 template<
typename _RAIter,
typename _Compare>
2146 partial_sort(_RAIter __begin, _RAIter __middle,
2147 _RAIter __end, _Compare __comp)
2155 partial_sort(__begin, __middle, __end, __comp,
2160 template<
typename _RAIter>
2162 partial_sort(_RAIter __begin, _RAIter __middle,
2165 typedef iterator_traits<_RAIter> _TraitsType;
2166 typedef typename _TraitsType::value_type _ValueType;
2167 __gnu_parallel::partial_sort(__begin, __middle, __end,
2172 template<
typename _FIterator>
2174 max_element(_FIterator __begin, _FIterator __end,
2176 {
return _GLIBCXX_STD_A::max_element(__begin, __end); }
2179 template<
typename _FIterator,
typename _Compare>
2181 max_element(_FIterator __begin, _FIterator __end, _Compare __comp,
2183 {
return _GLIBCXX_STD_A::max_element(__begin, __end, __comp); }
2186 template<
typename _FIterator,
typename _Compare,
typename _IteratorTag>
2188 __max_element_switch(_FIterator __begin, _FIterator __end,
2189 _Compare __comp, _IteratorTag)
2190 {
return max_element(__begin, __end, __comp,
2194 template<
typename _RAIter,
typename _Compare>
2196 __max_element_switch(_RAIter __begin, _RAIter __end,
2197 _Compare __comp, random_access_iterator_tag,
2203 && __gnu_parallel::__is_parallel(__parallelism_tag)))
2205 _RAIter __res(__begin);
2212 __res, __res, -1, __parallelism_tag);
2216 return max_element(__begin, __end, __comp,
2221 template<
typename _FIterator>
2223 max_element(_FIterator __begin, _FIterator __end,
2226 typedef typename iterator_traits<_FIterator>::value_type _ValueType;
2231 template<
typename _FIterator>
2233 max_element(_FIterator __begin, _FIterator __end)
2235 typedef typename iterator_traits<_FIterator>::value_type _ValueType;
2236 return __gnu_parallel::max_element(__begin, __end,
2241 template<
typename _FIterator,
typename _Compare>
2243 max_element(_FIterator __begin, _FIterator __end, _Compare __comp,
2246 typedef iterator_traits<_FIterator> _TraitsType;
2247 typedef typename _TraitsType::iterator_category _IteratorCategory;
2248 return __max_element_switch(__begin, __end, __comp, _IteratorCategory(),
2252 template<
typename _FIterator,
typename _Compare>
2254 max_element(_FIterator __begin, _FIterator __end, _Compare __comp)
2256 typedef iterator_traits<_FIterator> _TraitsType;
2257 typedef typename _TraitsType::iterator_category _IteratorCategory;
2258 return __max_element_switch(__begin, __end, __comp, _IteratorCategory());
2263 template<
typename _FIterator>
2265 min_element(_FIterator __begin, _FIterator __end,
2267 {
return _GLIBCXX_STD_A::min_element(__begin, __end); }
2270 template<
typename _FIterator,
typename _Compare>
2272 min_element(_FIterator __begin, _FIterator __end, _Compare __comp,
2274 {
return _GLIBCXX_STD_A::min_element(__begin, __end, __comp); }
2277 template<
typename _FIterator,
typename _Compare,
typename _IteratorTag>
2279 __min_element_switch(_FIterator __begin, _FIterator __end,
2280 _Compare __comp, _IteratorTag)
2281 {
return min_element(__begin, __end, __comp,
2285 template<
typename _RAIter,
typename _Compare>
2287 __min_element_switch(_RAIter __begin, _RAIter __end,
2288 _Compare __comp, random_access_iterator_tag,
2294 && __gnu_parallel::__is_parallel(__parallelism_tag)))
2296 _RAIter __res(__begin);
2303 __res, __res, -1, __parallelism_tag);
2307 return min_element(__begin, __end, __comp,
2312 template<
typename _FIterator>
2314 min_element(_FIterator __begin, _FIterator __end,
2317 typedef typename iterator_traits<_FIterator>::value_type _ValueType;
2322 template<
typename _FIterator>
2324 min_element(_FIterator __begin, _FIterator __end)
2326 typedef typename iterator_traits<_FIterator>::value_type _ValueType;
2327 return __gnu_parallel::min_element(__begin, __end,
2332 template<
typename _FIterator,
typename _Compare>
2334 min_element(_FIterator __begin, _FIterator __end, _Compare __comp,
2337 typedef iterator_traits<_FIterator> _TraitsType;
2338 typedef typename _TraitsType::iterator_category _IteratorCategory;
2339 return __min_element_switch(__begin, __end, __comp, _IteratorCategory(),
2343 template<
typename _FIterator,
typename _Compare>
2345 min_element(_FIterator __begin, _FIterator __end, _Compare __comp)
2347 typedef iterator_traits<_FIterator> _TraitsType;
2348 typedef typename _TraitsType::iterator_category _IteratorCategory;
2349 return __min_element_switch(__begin, __end, __comp, _IteratorCategory());