30#ifndef _GLIBCXX_ALGORITHMFWD_H
31#define _GLIBCXX_ALGORITHMFWD_H 1
33#pragma GCC system_header
38#if __cplusplus >= 201103L
42namespace std _GLIBCXX_VISIBILITY(default)
44_GLIBCXX_BEGIN_NAMESPACE_VERSION
194#if __cplusplus > 201703L
195# define __cpp_lib_constexpr_algorithms 201806L
198#if __cplusplus >= 201103L
199 template<
typename _IIter,
typename _Predicate>
202 all_of(_IIter, _IIter, _Predicate);
204 template<
typename _IIter,
typename _Predicate>
207 any_of(_IIter, _IIter, _Predicate);
210 template<
typename _FIter,
typename _Tp>
213 binary_search(_FIter, _FIter,
const _Tp&);
215 template<
typename _FIter,
typename _Tp,
typename _Compare>
218 binary_search(_FIter, _FIter,
const _Tp&, _Compare);
220#if __cplusplus > 201402L
221 template<
typename _Tp>
224 clamp(
const _Tp&,
const _Tp&,
const _Tp&);
226 template<
typename _Tp,
typename _Compare>
229 clamp(
const _Tp&,
const _Tp&,
const _Tp&, _Compare);
232 template<
typename _IIter,
typename _OIter>
235 copy(_IIter, _IIter, _OIter);
237 template<
typename _BIter1,
typename _BIter2>
240 copy_backward(_BIter1, _BIter1, _BIter2);
242#if __cplusplus >= 201103L
243 template<
typename _IIter,
typename _OIter,
typename _Predicate>
246 copy_if(_IIter, _IIter, _OIter, _Predicate);
248 template<
typename _IIter,
typename _Size,
typename _OIter>
251 copy_n(_IIter, _Size, _OIter);
257 template<
typename _FIter,
typename _Tp>
260 equal_range(_FIter, _FIter,
const _Tp&);
262 template<
typename _FIter,
typename _Tp,
typename _Compare>
265 equal_range(_FIter, _FIter,
const _Tp&, _Compare);
267 template<
typename _FIter,
typename _Tp>
270 fill(_FIter, _FIter,
const _Tp&);
272 template<
typename _OIter,
typename _Size,
typename _Tp>
275 fill_n(_OIter, _Size,
const _Tp&);
279 template<
typename _FIter1,
typename _FIter2>
282 find_end(_FIter1, _FIter1, _FIter2, _FIter2);
284 template<
typename _FIter1,
typename _FIter2,
typename _BinaryPredicate>
287 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
292#if __cplusplus >= 201103L
293 template<
typename _IIter,
typename _Predicate>
296 find_if_not(_IIter, _IIter, _Predicate);
303 template<
typename _IIter1,
typename _IIter2>
306 includes(_IIter1, _IIter1, _IIter2, _IIter2);
308 template<
typename _IIter1,
typename _IIter2,
typename _Compare>
311 includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
313 template<
typename _BIter>
315 inplace_merge(_BIter, _BIter, _BIter);
317 template<
typename _BIter,
typename _Compare>
319 inplace_merge(_BIter, _BIter, _BIter, _Compare);
321#if __cplusplus >= 201103L
322 template<
typename _RAIter>
325 is_heap(_RAIter, _RAIter);
327 template<
typename _RAIter,
typename _Compare>
330 is_heap(_RAIter, _RAIter, _Compare);
332 template<
typename _RAIter>
335 is_heap_until(_RAIter, _RAIter);
337 template<
typename _RAIter,
typename _Compare>
340 is_heap_until(_RAIter, _RAIter, _Compare);
342 template<
typename _IIter,
typename _Predicate>
345 is_partitioned(_IIter, _IIter, _Predicate);
347 template<
typename _FIter1,
typename _FIter2>
350 is_permutation(_FIter1, _FIter1, _FIter2);
352 template<
typename _FIter1,
typename _FIter2,
353 typename _BinaryPredicate>
356 is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate);
358 template<
typename _FIter>
361 is_sorted(_FIter, _FIter);
363 template<
typename _FIter,
typename _Compare>
366 is_sorted(_FIter, _FIter, _Compare);
368 template<
typename _FIter>
371 is_sorted_until(_FIter, _FIter);
373 template<
typename _FIter,
typename _Compare>
376 is_sorted_until(_FIter, _FIter, _Compare);
379 template<
typename _FIter1,
typename _FIter2>
382 iter_swap(_FIter1, _FIter2);
384 template<
typename _FIter,
typename _Tp>
387 lower_bound(_FIter, _FIter,
const _Tp&);
389 template<
typename _FIter,
typename _Tp,
typename _Compare>
392 lower_bound(_FIter, _FIter,
const _Tp&, _Compare);
394 template<
typename _RAIter>
397 make_heap(_RAIter, _RAIter);
399 template<
typename _RAIter,
typename _Compare>
402 make_heap(_RAIter, _RAIter, _Compare);
404 template<
typename _Tp>
407 max(
const _Tp&,
const _Tp&);
409 template<
typename _Tp,
typename _Compare>
412 max(
const _Tp&,
const _Tp&, _Compare);
417 template<
typename _Tp>
420 min(
const _Tp&,
const _Tp&);
422 template<
typename _Tp,
typename _Compare>
425 min(
const _Tp&,
const _Tp&, _Compare);
429#if __cplusplus >= 201103L
430 template<
typename _Tp>
432 pair<const _Tp&, const _Tp&>
433 minmax(
const _Tp&,
const _Tp&);
435 template<
typename _Tp,
typename _Compare>
437 pair<const _Tp&, const _Tp&>
438 minmax(
const _Tp&,
const _Tp&, _Compare);
440 template<
typename _FIter>
443 minmax_element(_FIter, _FIter);
445 template<
typename _FIter,
typename _Compare>
448 minmax_element(_FIter, _FIter, _Compare);
450 template<
typename _Tp>
453 min(initializer_list<_Tp>);
455 template<
typename _Tp,
typename _Compare>
458 min(initializer_list<_Tp>, _Compare);
460 template<
typename _Tp>
463 max(initializer_list<_Tp>);
465 template<
typename _Tp,
typename _Compare>
468 max(initializer_list<_Tp>, _Compare);
470 template<
typename _Tp>
473 minmax(initializer_list<_Tp>);
475 template<
typename _Tp,
typename _Compare>
478 minmax(initializer_list<_Tp>, _Compare);
483 template<
typename _BIter>
486 next_permutation(_BIter, _BIter);
488 template<
typename _BIter,
typename _Compare>
491 next_permutation(_BIter, _BIter, _Compare);
493#if __cplusplus >= 201103L
494 template<
typename _IIter,
typename _Predicate>
497 none_of(_IIter, _IIter, _Predicate);
503 template<
typename _IIter,
typename _RAIter>
506 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
508 template<
typename _IIter,
typename _RAIter,
typename _Compare>
511 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
515#if __cplusplus >= 201103L
516 template<
typename _IIter,
typename _OIter1,
517 typename _OIter2,
typename _Predicate>
519 pair<_OIter1, _OIter2>
520 partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate);
522 template<
typename _FIter,
typename _Predicate>
525 partition_point(_FIter, _FIter, _Predicate);
528 template<
typename _RAIter>
531 pop_heap(_RAIter, _RAIter);
533 template<
typename _RAIter,
typename _Compare>
536 pop_heap(_RAIter, _RAIter, _Compare);
538 template<
typename _BIter>
541 prev_permutation(_BIter, _BIter);
543 template<
typename _BIter,
typename _Compare>
546 prev_permutation(_BIter, _BIter, _Compare);
548 template<
typename _RAIter>
551 push_heap(_RAIter, _RAIter);
553 template<
typename _RAIter,
typename _Compare>
556 push_heap(_RAIter, _RAIter, _Compare);
560 template<
typename _FIter,
typename _Tp>
563 remove(_FIter, _FIter,
const _Tp&);
565 template<
typename _FIter,
typename _Predicate>
568 remove_if(_FIter, _FIter, _Predicate);
570 template<
typename _IIter,
typename _OIter,
typename _Tp>
573 remove_copy(_IIter, _IIter, _OIter,
const _Tp&);
575 template<
typename _IIter,
typename _OIter,
typename _Predicate>
578 remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
582 template<
typename _IIter,
typename _OIter,
typename _Tp>
585 replace_copy(_IIter, _IIter, _OIter,
const _Tp&,
const _Tp&);
587 template<
typename _Iter,
typename _OIter,
typename _Predicate,
typename _Tp>
590 replace_copy_if(_Iter, _Iter, _OIter, _Predicate,
const _Tp&);
594 template<
typename _BIter>
597 reverse(_BIter, _BIter);
599 template<
typename _BIter,
typename _OIter>
602 reverse_copy(_BIter, _BIter, _OIter);
604_GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
606 template<
typename _FIter>
609 rotate(_FIter, _FIter, _FIter);
611_GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
613 template<
typename _FIter,
typename _OIter>
616 rotate_copy(_FIter, _FIter, _FIter, _OIter);
625#if (__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
626 template<
typename _RAIter,
typename _UGenerator>
628 shuffle(_RAIter, _RAIter, _UGenerator&&);
631 template<
typename _RAIter>
634 sort_heap(_RAIter, _RAIter);
636 template<
typename _RAIter,
typename _Compare>
639 sort_heap(_RAIter, _RAIter, _Compare);
641 template<
typename _BIter,
typename _Predicate>
643 stable_partition(_BIter, _BIter, _Predicate);
645#if __cplusplus < 201103L
648 template<
typename _Tp,
size_t _Nm>
651 swap(_Tp& __a, _Tp& __b);
653 template<
typename _Tp,
size_t _Nm>
656 swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]);
659 template<
typename _FIter1,
typename _FIter2>
662 swap_ranges(_FIter1, _FIter1, _FIter2);
666 template<
typename _FIter>
669 unique(_FIter, _FIter);
671 template<
typename _FIter,
typename _BinaryPredicate>
674 unique(_FIter, _FIter, _BinaryPredicate);
678 template<
typename _FIter,
typename _Tp>
681 upper_bound(_FIter, _FIter,
const _Tp&);
683 template<
typename _FIter,
typename _Tp,
typename _Compare>
686 upper_bound(_FIter, _FIter,
const _Tp&, _Compare);
688_GLIBCXX_BEGIN_NAMESPACE_ALGO
690 template<
typename _FIter>
693 adjacent_find(_FIter, _FIter);
695 template<
typename _FIter,
typename _BinaryPredicate>
698 adjacent_find(_FIter, _FIter, _BinaryPredicate);
700 template<
typename _IIter,
typename _Tp>
702 typename iterator_traits<_IIter>::difference_type
703 count(_IIter, _IIter,
const _Tp&);
705 template<
typename _IIter,
typename _Predicate>
707 typename iterator_traits<_IIter>::difference_type
708 count_if(_IIter, _IIter, _Predicate);
710 template<
typename _IIter1,
typename _IIter2>
713 equal(_IIter1, _IIter1, _IIter2);
715 template<
typename _IIter1,
typename _IIter2,
typename _BinaryPredicate>
718 equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
720 template<
typename _IIter,
typename _Tp>
723 find(_IIter, _IIter,
const _Tp&);
725 template<
typename _FIter1,
typename _FIter2>
728 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
730 template<
typename _FIter1,
typename _FIter2,
typename _BinaryPredicate>
733 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
735 template<
typename _IIter,
typename _Predicate>
738 find_if(_IIter, _IIter, _Predicate);
740 template<
typename _IIter,
typename _Funct>
743 for_each(_IIter, _IIter, _Funct);
745 template<
typename _FIter,
typename _Generator>
748 generate(_FIter, _FIter, _Generator);
750 template<
typename _OIter,
typename _Size,
typename _Generator>
753 generate_n(_OIter, _Size, _Generator);
755 template<
typename _IIter1,
typename _IIter2>
758 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
760 template<
typename _IIter1,
typename _IIter2,
typename _Compare>
763 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
765 template<
typename _FIter>
768 max_element(_FIter, _FIter);
770 template<
typename _FIter,
typename _Compare>
773 max_element(_FIter, _FIter, _Compare);
775 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
778 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
780 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
784 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
786 template<
typename _FIter>
789 min_element(_FIter, _FIter);
791 template<
typename _FIter,
typename _Compare>
794 min_element(_FIter, _FIter, _Compare);
796 template<
typename _IIter1,
typename _IIter2>
798 pair<_IIter1, _IIter2>
799 mismatch(_IIter1, _IIter1, _IIter2);
801 template<
typename _IIter1,
typename _IIter2,
typename _BinaryPredicate>
803 pair<_IIter1, _IIter2>
804 mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
806 template<
typename _RAIter>
809 nth_element(_RAIter, _RAIter, _RAIter);
811 template<
typename _RAIter,
typename _Compare>
814 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
816 template<
typename _RAIter>
819 partial_sort(_RAIter, _RAIter, _RAIter);
821 template<
typename _RAIter,
typename _Compare>
824 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
826 template<
typename _BIter,
typename _Predicate>
829 partition(_BIter, _BIter, _Predicate);
831 template<
typename _RAIter>
832 _GLIBCXX14_DEPRECATED_SUGGEST(
"std::shuffle")
834 random_shuffle(_RAIter, _RAIter);
836 template<typename _RAIter, typename _Generator>
837 _GLIBCXX14_DEPRECATED_SUGGEST("
std::shuffle")
839 random_shuffle(_RAIter, _RAIter,
840#if __cplusplus >= 201103L
846 template<
typename _FIter,
typename _Tp>
849 replace(_FIter, _FIter,
const _Tp&,
const _Tp&);
851 template<
typename _FIter,
typename _Predicate,
typename _Tp>
854 replace_if(_FIter, _FIter, _Predicate,
const _Tp&);
856 template<
typename _FIter1,
typename _FIter2>
859 search(_FIter1, _FIter1, _FIter2, _FIter2);
861 template<
typename _FIter1,
typename _FIter2,
typename _BinaryPredicate>
864 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
866 template<
typename _FIter,
typename _Size,
typename _Tp>
869 search_n(_FIter, _FIter, _Size,
const _Tp&);
871 template<
typename _FIter,
typename _Size,
typename _Tp,
872 typename _BinaryPredicate>
875 search_n(_FIter, _FIter, _Size,
const _Tp&, _BinaryPredicate);
877 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
880 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
882 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
886 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
888 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
891 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
893 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
897 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
899 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
902 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
904 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
908 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
911 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
914 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
916 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
920 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
922 template<
typename _RAIter>
925 sort(_RAIter, _RAIter);
927 template<
typename _RAIter,
typename _Compare>
930 sort(_RAIter, _RAIter, _Compare);
932 template<
typename _RAIter>
934 stable_sort(_RAIter, _RAIter);
936 template<
typename _RAIter,
typename _Compare>
938 stable_sort(_RAIter, _RAIter, _Compare);
940 template<
typename _IIter,
typename _OIter,
typename _UnaryOperation>
943 transform(_IIter, _IIter, _OIter, _UnaryOperation);
945 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
946 typename _BinaryOperation>
949 transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
951 template<
typename _IIter,
typename _OIter>
954 unique_copy(_IIter, _IIter, _OIter);
956 template<
typename _IIter,
typename _OIter,
typename _BinaryPredicate>
959 unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
961_GLIBCXX_END_NAMESPACE_ALGO
962_GLIBCXX_END_NAMESPACE_VERSION
965#ifdef _GLIBCXX_PARALLEL
void swap(any &__x, any &__y) noexcept
Exchange the states of two any objects.
constexpr const _Tp & clamp(const _Tp &, const _Tp &, const _Tp &)
Returns the value clamped between lo and hi.
constexpr const _Tp & max(const _Tp &, const _Tp &)
This does what you think it does.
constexpr pair< const _Tp &, const _Tp & > minmax(const _Tp &, const _Tp &)
Determines min and max at once as an ordered pair.
constexpr const _Tp & min(const _Tp &, const _Tp &)
This does what you think it does.
ISO C++ entities toplevel namespace is std.