2015-05-05 Yvan Roux <yvan.roux@linaro.org>
[official-gcc.git] / libstdc++-v3 / include / bits / algorithmfwd.h
blob1dfc4ad7b158b09e24e198437452c7ea56f4fbcb
1 // <algorithm> Forward declarations -*- C++ -*-
3 // Copyright (C) 2007-2015 Free Software Foundation, Inc.
4 //
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 3, or (at your option)
9 // any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // Under Section 7 of GPL version 3, you are granted additional
17 // permissions described in the GCC Runtime Library Exception, version
18 // 3.1, as published by the Free Software Foundation.
20 // You should have received a copy of the GNU General Public License and
21 // a copy of the GCC Runtime Library Exception along with this program;
22 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23 // <http://www.gnu.org/licenses/>.
25 /** @file bits/algorithmfwd.h
26 * This is an internal header file, included by other library headers.
27 * Do not attempt to use it directly. @headername{algorithm}
30 #ifndef _GLIBCXX_ALGORITHMFWD_H
31 #define _GLIBCXX_ALGORITHMFWD_H 1
33 #pragma GCC system_header
35 #include <bits/c++config.h>
36 #include <bits/stl_pair.h>
37 #include <bits/stl_iterator_base_types.h>
38 #if __cplusplus >= 201103L
39 #include <initializer_list>
40 #endif
42 namespace std _GLIBCXX_VISIBILITY(default)
44 _GLIBCXX_BEGIN_NAMESPACE_VERSION
47 adjacent_find
48 all_of (C++0x)
49 any_of (C++0x)
50 binary_search
51 copy
52 copy_backward
53 copy_if (C++0x)
54 copy_n (C++0x)
55 count
56 count_if
57 equal
58 equal_range
59 fill
60 fill_n
61 find
62 find_end
63 find_first_of
64 find_if
65 find_if_not (C++0x)
66 for_each
67 generate
68 generate_n
69 includes
70 inplace_merge
71 is_heap (C++0x)
72 is_heap_until (C++0x)
73 is_partitioned (C++0x)
74 is_sorted (C++0x)
75 is_sorted_until (C++0x)
76 iter_swap
77 lexicographical_compare
78 lower_bound
79 make_heap
80 max
81 max_element
82 merge
83 min
84 min_element
85 minmax (C++0x)
86 minmax_element (C++0x)
87 mismatch
88 next_permutation
89 none_of (C++0x)
90 nth_element
91 partial_sort
92 partial_sort_copy
93 partition
94 partition_copy (C++0x)
95 partition_point (C++0x)
96 pop_heap
97 prev_permutation
98 push_heap
99 random_shuffle
100 remove
101 remove_copy
102 remove_copy_if
103 remove_if
104 replace
105 replace_copy
106 replace_copy_if
107 replace_if
108 reverse
109 reverse_copy
110 rotate
111 rotate_copy
112 search
113 search_n
114 set_difference
115 set_intersection
116 set_symmetric_difference
117 set_union
118 shuffle (C++0x)
119 sort
120 sort_heap
121 stable_partition
122 stable_sort
123 swap
124 swap_ranges
125 transform
126 unique
127 unique_copy
128 upper_bound
132 * @defgroup algorithms Algorithms
134 * Components for performing algorithmic operations. Includes
135 * non-modifying sequence, modifying (mutating) sequence, sorting,
136 * searching, merge, partition, heap, set, minima, maxima, and
137 * permutation operations.
141 * @defgroup mutating_algorithms Mutating
142 * @ingroup algorithms
146 * @defgroup non_mutating_algorithms Non-Mutating
147 * @ingroup algorithms
151 * @defgroup sorting_algorithms Sorting
152 * @ingroup algorithms
156 * @defgroup set_algorithms Set Operation
157 * @ingroup sorting_algorithms
159 * These algorithms are common set operations performed on sequences
160 * that are already sorted. The number of comparisons will be
161 * linear.
165 * @defgroup binary_search_algorithms Binary Search
166 * @ingroup sorting_algorithms
168 * These algorithms are variations of a classic binary search, and
169 * all assume that the sequence being searched is already sorted.
171 * The number of comparisons will be logarithmic (and as few as
172 * possible). The number of steps through the sequence will be
173 * logarithmic for random-access iterators (e.g., pointers), and
174 * linear otherwise.
176 * The LWG has passed Defect Report 270, which notes: <em>The
177 * proposed resolution reinterprets binary search. Instead of
178 * thinking about searching for a value in a sorted range, we view
179 * that as an important special case of a more general algorithm:
180 * searching for the partition point in a partitioned range. We
181 * also add a guarantee that the old wording did not: we ensure that
182 * the upper bound is no earlier than the lower bound, that the pair
183 * returned by equal_range is a valid range, and that the first part
184 * of that pair is the lower bound.</em>
186 * The actual effect of the first sentence is that a comparison
187 * functor passed by the user doesn't necessarily need to induce a
188 * strict weak ordering relation. Rather, it partitions the range.
191 // adjacent_find
193 #if __cplusplus >= 201103L
194 template<typename _IIter, typename _Predicate>
195 bool
196 all_of(_IIter, _IIter, _Predicate);
198 template<typename _IIter, typename _Predicate>
199 bool
200 any_of(_IIter, _IIter, _Predicate);
201 #endif
203 template<typename _FIter, typename _Tp>
204 bool
205 binary_search(_FIter, _FIter, const _Tp&);
207 template<typename _FIter, typename _Tp, typename _Compare>
208 bool
209 binary_search(_FIter, _FIter, const _Tp&, _Compare);
211 template<typename _IIter, typename _OIter>
212 _OIter
213 copy(_IIter, _IIter, _OIter);
215 template<typename _BIter1, typename _BIter2>
216 _BIter2
217 copy_backward(_BIter1, _BIter1, _BIter2);
219 #if __cplusplus >= 201103L
220 template<typename _IIter, typename _OIter, typename _Predicate>
221 _OIter
222 copy_if(_IIter, _IIter, _OIter, _Predicate);
224 template<typename _IIter, typename _Size, typename _OIter>
225 _OIter
226 copy_n(_IIter, _Size, _OIter);
227 #endif
229 // count
230 // count_if
232 template<typename _FIter, typename _Tp>
233 pair<_FIter, _FIter>
234 equal_range(_FIter, _FIter, const _Tp&);
236 template<typename _FIter, typename _Tp, typename _Compare>
237 pair<_FIter, _FIter>
238 equal_range(_FIter, _FIter, const _Tp&, _Compare);
240 template<typename _FIter, typename _Tp>
241 void
242 fill(_FIter, _FIter, const _Tp&);
244 template<typename _OIter, typename _Size, typename _Tp>
245 _OIter
246 fill_n(_OIter, _Size, const _Tp&);
248 // find
250 template<typename _FIter1, typename _FIter2>
251 _FIter1
252 find_end(_FIter1, _FIter1, _FIter2, _FIter2);
254 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
255 _FIter1
256 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
258 // find_first_of
259 // find_if
261 #if __cplusplus >= 201103L
262 template<typename _IIter, typename _Predicate>
263 _IIter
264 find_if_not(_IIter, _IIter, _Predicate);
265 #endif
267 // for_each
268 // generate
269 // generate_n
271 template<typename _IIter1, typename _IIter2>
272 bool
273 includes(_IIter1, _IIter1, _IIter2, _IIter2);
275 template<typename _IIter1, typename _IIter2, typename _Compare>
276 bool
277 includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
279 template<typename _BIter>
280 void
281 inplace_merge(_BIter, _BIter, _BIter);
283 template<typename _BIter, typename _Compare>
284 void
285 inplace_merge(_BIter, _BIter, _BIter, _Compare);
287 #if __cplusplus >= 201103L
288 template<typename _RAIter>
289 bool
290 is_heap(_RAIter, _RAIter);
292 template<typename _RAIter, typename _Compare>
293 bool
294 is_heap(_RAIter, _RAIter, _Compare);
296 template<typename _RAIter>
297 _RAIter
298 is_heap_until(_RAIter, _RAIter);
300 template<typename _RAIter, typename _Compare>
301 _RAIter
302 is_heap_until(_RAIter, _RAIter, _Compare);
304 template<typename _IIter, typename _Predicate>
305 bool
306 is_partitioned(_IIter, _IIter, _Predicate);
308 template<typename _FIter1, typename _FIter2>
309 bool
310 is_permutation(_FIter1, _FIter1, _FIter2);
312 template<typename _FIter1, typename _FIter2,
313 typename _BinaryPredicate>
314 bool
315 is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate);
317 template<typename _FIter>
318 bool
319 is_sorted(_FIter, _FIter);
321 template<typename _FIter, typename _Compare>
322 bool
323 is_sorted(_FIter, _FIter, _Compare);
325 template<typename _FIter>
326 _FIter
327 is_sorted_until(_FIter, _FIter);
329 template<typename _FIter, typename _Compare>
330 _FIter
331 is_sorted_until(_FIter, _FIter, _Compare);
332 #endif
334 template<typename _FIter1, typename _FIter2>
335 void
336 iter_swap(_FIter1, _FIter2);
338 template<typename _FIter, typename _Tp>
339 _FIter
340 lower_bound(_FIter, _FIter, const _Tp&);
342 template<typename _FIter, typename _Tp, typename _Compare>
343 _FIter
344 lower_bound(_FIter, _FIter, const _Tp&, _Compare);
346 template<typename _RAIter>
347 void
348 make_heap(_RAIter, _RAIter);
350 template<typename _RAIter, typename _Compare>
351 void
352 make_heap(_RAIter, _RAIter, _Compare);
354 template<typename _Tp>
355 _GLIBCXX14_CONSTEXPR
356 const _Tp&
357 max(const _Tp&, const _Tp&);
359 template<typename _Tp, typename _Compare>
360 _GLIBCXX14_CONSTEXPR
361 const _Tp&
362 max(const _Tp&, const _Tp&, _Compare);
364 // max_element
365 // merge
367 template<typename _Tp>
368 _GLIBCXX14_CONSTEXPR
369 const _Tp&
370 min(const _Tp&, const _Tp&);
372 template<typename _Tp, typename _Compare>
373 _GLIBCXX14_CONSTEXPR
374 const _Tp&
375 min(const _Tp&, const _Tp&, _Compare);
377 // min_element
379 #if __cplusplus >= 201103L
380 template<typename _Tp>
381 _GLIBCXX14_CONSTEXPR
382 pair<const _Tp&, const _Tp&>
383 minmax(const _Tp&, const _Tp&);
385 template<typename _Tp, typename _Compare>
386 _GLIBCXX14_CONSTEXPR
387 pair<const _Tp&, const _Tp&>
388 minmax(const _Tp&, const _Tp&, _Compare);
390 template<typename _FIter>
391 _GLIBCXX14_CONSTEXPR
392 pair<_FIter, _FIter>
393 minmax_element(_FIter, _FIter);
395 template<typename _FIter, typename _Compare>
396 _GLIBCXX14_CONSTEXPR
397 pair<_FIter, _FIter>
398 minmax_element(_FIter, _FIter, _Compare);
400 template<typename _Tp>
401 _GLIBCXX14_CONSTEXPR
403 min(initializer_list<_Tp>);
405 template<typename _Tp, typename _Compare>
406 _GLIBCXX14_CONSTEXPR
408 min(initializer_list<_Tp>, _Compare);
410 template<typename _Tp>
411 _GLIBCXX14_CONSTEXPR
413 max(initializer_list<_Tp>);
415 template<typename _Tp, typename _Compare>
416 _GLIBCXX14_CONSTEXPR
418 max(initializer_list<_Tp>, _Compare);
420 template<typename _Tp>
421 _GLIBCXX14_CONSTEXPR
422 pair<_Tp, _Tp>
423 minmax(initializer_list<_Tp>);
425 template<typename _Tp, typename _Compare>
426 _GLIBCXX14_CONSTEXPR
427 pair<_Tp, _Tp>
428 minmax(initializer_list<_Tp>, _Compare);
429 #endif
431 // mismatch
433 template<typename _BIter>
434 bool
435 next_permutation(_BIter, _BIter);
437 template<typename _BIter, typename _Compare>
438 bool
439 next_permutation(_BIter, _BIter, _Compare);
441 #if __cplusplus >= 201103L
442 template<typename _IIter, typename _Predicate>
443 bool
444 none_of(_IIter, _IIter, _Predicate);
445 #endif
447 // nth_element
448 // partial_sort
450 template<typename _IIter, typename _RAIter>
451 _RAIter
452 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
454 template<typename _IIter, typename _RAIter, typename _Compare>
455 _RAIter
456 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
458 // partition
460 #if __cplusplus >= 201103L
461 template<typename _IIter, typename _OIter1,
462 typename _OIter2, typename _Predicate>
463 pair<_OIter1, _OIter2>
464 partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate);
466 template<typename _FIter, typename _Predicate>
467 _FIter
468 partition_point(_FIter, _FIter, _Predicate);
469 #endif
471 template<typename _RAIter>
472 void
473 pop_heap(_RAIter, _RAIter);
475 template<typename _RAIter, typename _Compare>
476 void
477 pop_heap(_RAIter, _RAIter, _Compare);
479 template<typename _BIter>
480 bool
481 prev_permutation(_BIter, _BIter);
483 template<typename _BIter, typename _Compare>
484 bool
485 prev_permutation(_BIter, _BIter, _Compare);
487 template<typename _RAIter>
488 void
489 push_heap(_RAIter, _RAIter);
491 template<typename _RAIter, typename _Compare>
492 void
493 push_heap(_RAIter, _RAIter, _Compare);
495 // random_shuffle
497 template<typename _FIter, typename _Tp>
498 _FIter
499 remove(_FIter, _FIter, const _Tp&);
501 template<typename _FIter, typename _Predicate>
502 _FIter
503 remove_if(_FIter, _FIter, _Predicate);
505 template<typename _IIter, typename _OIter, typename _Tp>
506 _OIter
507 remove_copy(_IIter, _IIter, _OIter, const _Tp&);
509 template<typename _IIter, typename _OIter, typename _Predicate>
510 _OIter
511 remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
513 // replace
515 template<typename _IIter, typename _OIter, typename _Tp>
516 _OIter
517 replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&);
519 template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp>
520 _OIter
521 replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&);
523 // replace_if
525 template<typename _BIter>
526 void
527 reverse(_BIter, _BIter);
529 template<typename _BIter, typename _OIter>
530 _OIter
531 reverse_copy(_BIter, _BIter, _OIter);
533 inline namespace _V2
535 template<typename _FIter>
536 _FIter
537 rotate(_FIter, _FIter, _FIter);
540 template<typename _FIter, typename _OIter>
541 _OIter
542 rotate_copy(_FIter, _FIter, _FIter, _OIter);
544 // search
545 // search_n
546 // set_difference
547 // set_intersection
548 // set_symmetric_difference
549 // set_union
551 #if (__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
552 template<typename _RAIter, typename _UGenerator>
553 void
554 shuffle(_RAIter, _RAIter, _UGenerator&&);
555 #endif
557 template<typename _RAIter>
558 void
559 sort_heap(_RAIter, _RAIter);
561 template<typename _RAIter, typename _Compare>
562 void
563 sort_heap(_RAIter, _RAIter, _Compare);
565 template<typename _BIter, typename _Predicate>
566 _BIter
567 stable_partition(_BIter, _BIter, _Predicate);
569 template<typename _Tp>
570 void
571 swap(_Tp&, _Tp&)
572 #if __cplusplus >= 201103L
573 noexcept(__and_<is_nothrow_move_constructible<_Tp>,
574 is_nothrow_move_assignable<_Tp>>::value)
575 #endif
578 template<typename _Tp, size_t _Nm>
579 void
580 swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
581 #if __cplusplus >= 201103L
582 noexcept(noexcept(swap(*__a, *__b)))
583 #endif
586 template<typename _FIter1, typename _FIter2>
587 _FIter2
588 swap_ranges(_FIter1, _FIter1, _FIter2);
590 // transform
592 template<typename _FIter>
593 _FIter
594 unique(_FIter, _FIter);
596 template<typename _FIter, typename _BinaryPredicate>
597 _FIter
598 unique(_FIter, _FIter, _BinaryPredicate);
600 // unique_copy
602 template<typename _FIter, typename _Tp>
603 _FIter
604 upper_bound(_FIter, _FIter, const _Tp&);
606 template<typename _FIter, typename _Tp, typename _Compare>
607 _FIter
608 upper_bound(_FIter, _FIter, const _Tp&, _Compare);
610 _GLIBCXX_END_NAMESPACE_VERSION
612 _GLIBCXX_BEGIN_NAMESPACE_ALGO
614 template<typename _FIter>
615 _FIter
616 adjacent_find(_FIter, _FIter);
618 template<typename _FIter, typename _BinaryPredicate>
619 _FIter
620 adjacent_find(_FIter, _FIter, _BinaryPredicate);
622 template<typename _IIter, typename _Tp>
623 typename iterator_traits<_IIter>::difference_type
624 count(_IIter, _IIter, const _Tp&);
626 template<typename _IIter, typename _Predicate>
627 typename iterator_traits<_IIter>::difference_type
628 count_if(_IIter, _IIter, _Predicate);
630 template<typename _IIter1, typename _IIter2>
631 bool
632 equal(_IIter1, _IIter1, _IIter2);
634 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
635 bool
636 equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
638 template<typename _IIter, typename _Tp>
639 _IIter
640 find(_IIter, _IIter, const _Tp&);
642 template<typename _FIter1, typename _FIter2>
643 _FIter1
644 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
646 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
647 _FIter1
648 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
650 template<typename _IIter, typename _Predicate>
651 _IIter
652 find_if(_IIter, _IIter, _Predicate);
654 template<typename _IIter, typename _Funct>
655 _Funct
656 for_each(_IIter, _IIter, _Funct);
658 template<typename _FIter, typename _Generator>
659 void
660 generate(_FIter, _FIter, _Generator);
662 template<typename _OIter, typename _Size, typename _Generator>
663 _OIter
664 generate_n(_OIter, _Size, _Generator);
666 template<typename _IIter1, typename _IIter2>
667 bool
668 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
670 template<typename _IIter1, typename _IIter2, typename _Compare>
671 bool
672 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
674 template<typename _FIter>
675 _GLIBCXX14_CONSTEXPR
676 _FIter
677 max_element(_FIter, _FIter);
679 template<typename _FIter, typename _Compare>
680 _GLIBCXX14_CONSTEXPR
681 _FIter
682 max_element(_FIter, _FIter, _Compare);
684 template<typename _IIter1, typename _IIter2, typename _OIter>
685 _OIter
686 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
688 template<typename _IIter1, typename _IIter2, typename _OIter,
689 typename _Compare>
690 _OIter
691 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
693 template<typename _FIter>
694 _GLIBCXX14_CONSTEXPR
695 _FIter
696 min_element(_FIter, _FIter);
698 template<typename _FIter, typename _Compare>
699 _GLIBCXX14_CONSTEXPR
700 _FIter
701 min_element(_FIter, _FIter, _Compare);
703 template<typename _IIter1, typename _IIter2>
704 pair<_IIter1, _IIter2>
705 mismatch(_IIter1, _IIter1, _IIter2);
707 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
708 pair<_IIter1, _IIter2>
709 mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
711 template<typename _RAIter>
712 void
713 nth_element(_RAIter, _RAIter, _RAIter);
715 template<typename _RAIter, typename _Compare>
716 void
717 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
719 template<typename _RAIter>
720 void
721 partial_sort(_RAIter, _RAIter, _RAIter);
723 template<typename _RAIter, typename _Compare>
724 void
725 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
727 template<typename _BIter, typename _Predicate>
728 _BIter
729 partition(_BIter, _BIter, _Predicate);
731 template<typename _RAIter>
732 void
733 random_shuffle(_RAIter, _RAIter);
735 template<typename _RAIter, typename _Generator>
736 void
737 random_shuffle(_RAIter, _RAIter,
738 #if __cplusplus >= 201103L
739 _Generator&&);
740 #else
741 _Generator&);
742 #endif
744 template<typename _FIter, typename _Tp>
745 void
746 replace(_FIter, _FIter, const _Tp&, const _Tp&);
748 template<typename _FIter, typename _Predicate, typename _Tp>
749 void
750 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
752 template<typename _FIter1, typename _FIter2>
753 _FIter1
754 search(_FIter1, _FIter1, _FIter2, _FIter2);
756 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
757 _FIter1
758 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
760 template<typename _FIter, typename _Size, typename _Tp>
761 _FIter
762 search_n(_FIter, _FIter, _Size, const _Tp&);
764 template<typename _FIter, typename _Size, typename _Tp,
765 typename _BinaryPredicate>
766 _FIter
767 search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
769 template<typename _IIter1, typename _IIter2, typename _OIter>
770 _OIter
771 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
773 template<typename _IIter1, typename _IIter2, typename _OIter,
774 typename _Compare>
775 _OIter
776 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
778 template<typename _IIter1, typename _IIter2, typename _OIter>
779 _OIter
780 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
782 template<typename _IIter1, typename _IIter2, typename _OIter,
783 typename _Compare>
784 _OIter
785 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
787 template<typename _IIter1, typename _IIter2, typename _OIter>
788 _OIter
789 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
791 template<typename _IIter1, typename _IIter2, typename _OIter,
792 typename _Compare>
793 _OIter
794 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
795 _OIter, _Compare);
797 template<typename _IIter1, typename _IIter2, typename _OIter>
798 _OIter
799 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
801 template<typename _IIter1, typename _IIter2, typename _OIter,
802 typename _Compare>
803 _OIter
804 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
806 template<typename _RAIter>
807 void
808 sort(_RAIter, _RAIter);
810 template<typename _RAIter, typename _Compare>
811 void
812 sort(_RAIter, _RAIter, _Compare);
814 template<typename _RAIter>
815 void
816 stable_sort(_RAIter, _RAIter);
818 template<typename _RAIter, typename _Compare>
819 void
820 stable_sort(_RAIter, _RAIter, _Compare);
822 template<typename _IIter, typename _OIter, typename _UnaryOperation>
823 _OIter
824 transform(_IIter, _IIter, _OIter, _UnaryOperation);
826 template<typename _IIter1, typename _IIter2, typename _OIter,
827 typename _BinaryOperation>
828 _OIter
829 transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
831 template<typename _IIter, typename _OIter>
832 _OIter
833 unique_copy(_IIter, _IIter, _OIter);
835 template<typename _IIter, typename _OIter, typename _BinaryPredicate>
836 _OIter
837 unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
839 _GLIBCXX_END_NAMESPACE_ALGO
840 } // namespace std
842 #ifdef _GLIBCXX_PARALLEL
843 # include <parallel/algorithmfwd.h>
844 #endif
846 #endif