30 #ifndef _GLIBCXX_ALGORITHMFWD_H
31 #define _GLIBCXX_ALGORITHMFWD_H 1
33 #pragma GCC system_header
40 _GLIBCXX_BEGIN_NAMESPACE(std)
188 #ifdef __GXX_EXPERIMENTAL_CXX0X__
189 template<
typename _IIter,
typename _Predicate>
191 all_of(_IIter, _IIter, _Predicate);
193 template<
typename _IIter,
typename _Predicate>
195 any_of(_IIter, _IIter, _Predicate);
198 template<
typename _FIter,
typename _Tp>
200 binary_search(_FIter, _FIter,
const _Tp&);
202 template<
typename _FIter,
typename _Tp,
typename _Compare>
204 binary_search(_FIter, _FIter,
const _Tp&, _Compare);
206 template<
typename _IIter,
typename _OIter>
208 copy(_IIter, _IIter, _OIter);
210 template<
typename _BIter1,
typename _BIter2>
212 copy_backward(_BIter1, _BIter1, _BIter2);
214 #ifdef __GXX_EXPERIMENTAL_CXX0X__
215 template<
typename _IIter,
typename _OIter,
typename _Predicate>
217 copy_if(_IIter, _IIter, _OIter, _Predicate);
219 template<
typename _IIter,
typename _Size,
typename _OIter>
221 copy_n(_IIter, _Size, _OIter);
227 template<
typename _FIter,
typename _Tp>
229 equal_range(_FIter, _FIter,
const _Tp&);
231 template<
typename _FIter,
typename _Tp,
typename _Compare>
233 equal_range(_FIter, _FIter,
const _Tp&, _Compare);
235 template<
typename _FIter,
typename _Tp>
237 fill(_FIter, _FIter,
const _Tp&);
246 template<
typename _OIter,
typename _Size,
typename _Tp>
248 fill_n(_OIter, _Size,
const _Tp&);
252 template<
typename _FIter1,
typename _FIter2>
254 find_end(_FIter1, _FIter1, _FIter2, _FIter2);
256 template<
typename _FIter1,
typename _FIter2,
typename _BinaryPredicate>
258 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
263 #ifdef __GXX_EXPERIMENTAL_CXX0X__
264 template<
typename _IIter,
typename _Predicate>
266 find_if_not(_IIter, _IIter, _Predicate);
273 template<
typename _IIter1,
typename _IIter2>
275 includes(_IIter1, _IIter1, _IIter2, _IIter2);
277 template<
typename _IIter1,
typename _IIter2,
typename _Compare>
279 includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
281 template<
typename _BIter>
283 inplace_merge(_BIter, _BIter, _BIter);
285 template<
typename _BIter,
typename _Compare>
287 inplace_merge(_BIter, _BIter, _BIter, _Compare);
289 #ifdef __GXX_EXPERIMENTAL_CXX0X__
290 template<
typename _RAIter>
294 template<
typename _RAIter,
typename _Compare>
296 is_heap(_RAIter, _RAIter, _Compare);
298 template<
typename _RAIter>
300 is_heap_until(_RAIter, _RAIter);
302 template<
typename _RAIter,
typename _Compare>
304 is_heap_until(_RAIter, _RAIter, _Compare);
306 template<
typename _IIter,
typename _Predicate>
308 is_partitioned(_IIter, _IIter, _Predicate);
310 template<
typename _FIter>
314 template<
typename _FIter,
typename _Compare>
318 template<
typename _FIter>
320 is_sorted_until(_FIter, _FIter);
322 template<
typename _FIter,
typename _Compare>
324 is_sorted_until(_FIter, _FIter, _Compare);
327 template<
typename _FIter1,
typename _FIter2>
329 iter_swap(_FIter1, _FIter2);
331 template<
typename _FIter,
typename _Tp>
333 lower_bound(_FIter, _FIter,
const _Tp&);
335 template<
typename _FIter,
typename _Tp,
typename _Compare>
337 lower_bound(_FIter, _FIter,
const _Tp&, _Compare);
339 template<
typename _RAIter>
341 make_heap(_RAIter, _RAIter);
343 template<
typename _RAIter,
typename _Compare>
345 make_heap(_RAIter, _RAIter, _Compare);
347 template<
typename _Tp>
349 max(
const _Tp&,
const _Tp&);
351 template<
typename _Tp,
typename _Compare>
353 max(
const _Tp&,
const _Tp&, _Compare);
358 template<
typename _Tp>
360 min(
const _Tp&,
const _Tp&);
362 template<
typename _Tp,
typename _Compare>
364 min(
const _Tp&,
const _Tp&, _Compare);
368 #ifdef __GXX_EXPERIMENTAL_CXX0X__
369 template<
typename _Tp>
370 pair<const _Tp&, const _Tp&>
371 minmax(
const _Tp&,
const _Tp&);
373 template<
typename _Tp,
typename _Compare>
374 pair<const _Tp&, const _Tp&>
375 minmax(
const _Tp&,
const _Tp&, _Compare);
377 template<
typename _FIter>
379 minmax_element(_FIter, _FIter);
381 template<
typename _FIter,
typename _Compare>
383 minmax_element(_FIter, _FIter, _Compare);
385 template<
typename _Tp>
387 min(initializer_list<_Tp>);
389 template<
typename _Tp,
typename _Compare>
391 min(initializer_list<_Tp>, _Compare);
393 template<
typename _Tp>
395 max(initializer_list<_Tp>);
397 template<
typename _Tp,
typename _Compare>
399 max(initializer_list<_Tp>, _Compare);
401 template<
typename _Tp>
403 minmax(initializer_list<_Tp>);
405 template<
typename _Tp,
typename _Compare>
407 minmax(initializer_list<_Tp>, _Compare);
412 template<
typename _BIter>
414 next_permutation(_BIter, _BIter);
416 template<
typename _BIter,
typename _Compare>
418 next_permutation(_BIter, _BIter, _Compare);
420 #ifdef __GXX_EXPERIMENTAL_CXX0X__
421 template<
typename _IIter,
typename _Predicate>
423 none_of(_IIter, _IIter, _Predicate);
429 template<
typename _IIter,
typename _RAIter>
431 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
433 template<
typename _IIter,
typename _RAIter,
typename _Compare>
435 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
439 #ifdef __GXX_EXPERIMENTAL_CXX0X__
440 template<
typename _IIter,
typename _OIter1,
441 typename _OIter2,
typename _Predicate>
442 pair<_OIter1, _OIter2>
443 partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate);
445 template<
typename _FIter,
typename _Predicate>
447 partition_point(_FIter, _FIter, _Predicate);
450 template<
typename _RAIter>
452 pop_heap(_RAIter, _RAIter);
454 template<
typename _RAIter,
typename _Compare>
456 pop_heap(_RAIter, _RAIter, _Compare);
458 template<
typename _BIter>
460 prev_permutation(_BIter, _BIter);
462 template<
typename _BIter,
typename _Compare>
464 prev_permutation(_BIter, _BIter, _Compare);
466 template<
typename _RAIter>
468 push_heap(_RAIter, _RAIter);
470 template<
typename _RAIter,
typename _Compare>
472 push_heap(_RAIter, _RAIter, _Compare);
476 template<
typename _FIter,
typename _Tp>
478 remove(_FIter, _FIter,
const _Tp&);
480 template<
typename _FIter,
typename _Predicate>
482 remove_if(_FIter, _FIter, _Predicate);
484 template<
typename _IIter,
typename _OIter,
typename _Tp>
486 remove_copy(_IIter, _IIter, _OIter,
const _Tp&);
488 template<
typename _IIter,
typename _OIter,
typename _Predicate>
490 remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
494 template<
typename _IIter,
typename _OIter,
typename _Tp>
496 replace_copy(_IIter, _IIter, _OIter,
const _Tp&,
const _Tp&);
498 template<
typename _Iter,
typename _OIter,
typename _Predicate,
typename _Tp>
500 replace_copy_if(_Iter, _Iter, _OIter, _Predicate,
const _Tp&);
504 template<
typename _BIter>
506 reverse(_BIter, _BIter);
508 template<
typename _BIter,
typename _OIter>
510 reverse_copy(_BIter, _BIter, _OIter);
512 template<
typename _FIter>
514 rotate(_FIter, _FIter, _FIter);
516 template<
typename _FIter,
typename _OIter>
518 rotate_copy(_FIter, _FIter, _FIter, _OIter);
527 template<
typename _RAIter>
529 sort_heap(_RAIter, _RAIter);
531 template<
typename _RAIter,
typename _Compare>
533 sort_heap(_RAIter, _RAIter, _Compare);
535 template<
typename _BIter,
typename _Predicate>
537 stable_partition(_BIter, _BIter, _Predicate);
539 template<
typename _Tp>
543 template<
typename _Tp,
size_t _Nm>
545 swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
547 template<
typename _FIter1,
typename _FIter2>
549 swap_ranges(_FIter1, _FIter1, _FIter2);
553 template<
typename _FIter>
555 unique(_FIter, _FIter);
557 template<
typename _FIter,
typename _BinaryPredicate>
559 unique(_FIter, _FIter, _BinaryPredicate);
563 template<
typename _FIter,
typename _Tp>
565 upper_bound(_FIter, _FIter,
const _Tp&);
567 template<
typename _FIter,
typename _Tp,
typename _Compare>
569 upper_bound(_FIter, _FIter,
const _Tp&, _Compare);
571 _GLIBCXX_END_NAMESPACE
573 _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
575 template<typename _FIter>
577 adjacent_find(_FIter, _FIter);
579 template<typename _FIter, typename _BinaryPredicate>
581 adjacent_find(_FIter, _FIter, _BinaryPredicate);
583 template<typename _IIter, typename _Tp>
584 typename iterator_traits<_IIter>::difference_type
585 count(_IIter, _IIter, const _Tp&);
587 template<typename _IIter, typename _Predicate>
588 typename iterator_traits<_IIter>::difference_type
589 count_if(_IIter, _IIter, _Predicate);
591 template<typename _IIter1, typename _IIter2>
593 equal(_IIter1, _IIter1, _IIter2);
595 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
597 equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
599 template<typename _IIter, typename _Tp>
601 find(_IIter, _IIter, const _Tp&);
603 template<typename _FIter1, typename _FIter2>
605 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
607 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
609 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
611 template<typename _IIter, typename _Predicate>
613 find_if(_IIter, _IIter, _Predicate);
615 template<typename _IIter, typename _Funct>
617 for_each(_IIter, _IIter, _Funct);
619 template<typename _FIter, typename _Generator>
621 generate(_FIter, _FIter, _Generator);
630 template<typename _OIter, typename _Size, typename _Generator>
632 generate_n(_OIter, _Size, _Generator);
634 template<typename _IIter1, typename _IIter2>
636 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
638 template<typename _IIter1, typename _IIter2, typename _Compare>
640 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
642 template<typename _FIter>
644 max_element(_FIter, _FIter);
646 template<typename _FIter, typename _Compare>
648 max_element(_FIter, _FIter, _Compare);
650 template<typename _IIter1, typename _IIter2, typename _OIter>
652 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
654 template<typename _IIter1, typename _IIter2, typename _OIter,
657 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
659 template<typename _FIter>
661 min_element(_FIter, _FIter);
663 template<typename _FIter, typename _Compare>
665 min_element(_FIter, _FIter, _Compare);
667 template<typename _IIter1, typename _IIter2>
668 pair<_IIter1, _IIter2>
669 mismatch(_IIter1, _IIter1, _IIter2);
671 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
672 pair<_IIter1, _IIter2>
673 mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
675 template<typename _RAIter>
677 nth_element(_RAIter, _RAIter, _RAIter);
679 template<typename _RAIter, typename _Compare>
681 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
683 template<typename _RAIter>
685 partial_sort(_RAIter, _RAIter, _RAIter);
687 template<typename _RAIter, typename _Compare>
689 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
691 template<typename _BIter, typename _Predicate>
693 partition(_BIter, _BIter, _Predicate);
695 template<typename _RAIter>
697 random_shuffle(_RAIter, _RAIter);
699 template<typename _RAIter, typename _Generator>
701 random_shuffle(_RAIter, _RAIter, _Generator&);
703 template<typename _FIter, typename _Tp>
705 replace(_FIter, _FIter, const _Tp&, const _Tp&);
707 template<typename _FIter, typename _Predicate, typename _Tp>
709 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
711 template<typename _FIter1, typename _FIter2>
713 search(_FIter1, _FIter1, _FIter2, _FIter2);
715 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
717 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
719 template<typename _FIter, typename _Size, typename _Tp>
721 search_n(_FIter, _FIter, _Size, const _Tp&);
723 template<typename _FIter, typename _Size, typename _Tp,
724 typename _BinaryPredicate>
726 search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
728 template<typename _IIter1, typename _IIter2, typename _OIter>
730 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
732 template<typename _IIter1, typename _IIter2, typename _OIter,
735 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
737 template<typename _IIter1, typename _IIter2, typename _OIter>
739 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
741 template<typename _IIter1, typename _IIter2, typename _OIter,
744 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
746 template<typename _IIter1, typename _IIter2, typename _OIter>
748 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
750 template<typename _IIter1, typename _IIter2, typename _OIter,
753 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
756 template<typename _IIter1, typename _IIter2, typename _OIter>
758 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
760 template<typename _IIter1, typename _IIter2, typename _OIter,
763 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
765 template<typename _RAIter>
767 sort(_RAIter, _RAIter);
769 template<typename _RAIter, typename _Compare>
771 sort(_RAIter, _RAIter, _Compare);
773 template<typename _RAIter>
775 stable_sort(_RAIter, _RAIter);
777 template<typename _RAIter, typename _Compare>
779 stable_sort(_RAIter, _RAIter, _Compare);
781 template<typename _IIter, typename _OIter, typename _UnaryOperation>
783 transform(_IIter, _IIter, _OIter, _UnaryOperation);
785 template<typename _IIter1, typename _IIter2, typename _OIter,
786 typename _BinaryOperation>
788 transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
790 template<typename _IIter, typename _OIter>
792 unique_copy(_IIter, _IIter, _OIter);
794 template<typename _IIter, typename _OIter, typename _BinaryPredicate>
796 unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
798 _GLIBCXX_END_NESTED_NAMESPACE
800 #ifdef _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
bool is_sorted(_ForwardIterator __first, _ForwardIterator __last)
bool equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate)
Tests a range for element-wise equality.
const _Tp & max(const _Tp &, const _Tp &)
This does what you think it does.
const _Tp & min(const _Tp &, const _Tp &)
This does what you think it does.
pair< _InputIterator, _OutputIterator > copy_n(_InputIterator __first, _Size __count, _OutputIterator __result)
Copies the range [first,first+count) into [result,result+count).
pair< const _Tp &, const _Tp & > minmax(const _Tp &, const _Tp &)
Determines min and max at once as an ordered pair.
bool is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)