]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/include/bits/algorithmfwd.h
Daily bump.
[thirdparty/gcc.git] / libstdc++-v3 / include / bits / algorithmfwd.h
CommitLineData
c2ba9709
JS
1// <algorithm> declarations -*- C++ -*-
2
aac2878e 3// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
c2ba9709
JS
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 2, or (at your option)
9// any later version.
10
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.
15
16// You should have received a copy of the GNU General Public License along
17// with this library; see the file COPYING. If not, write to the Free
18// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
19// USA.
20
21/** @file bits/algorithmfwd.h
22 * This is an internal header file, included by other library headers.
23 * You should not attempt to use it directly.
24 */
25
c2ba9709
JS
26#ifndef _GLIBCXX_ALGORITHMFWD_H
27#define _GLIBCXX_ALGORITHMFWD_H 1
28
29#pragma GCC system_header
30
31#include <bits/c++config.h>
32#include <bits/stl_pair.h>
33#include <bits/stl_iterator_base_types.h>
1edd1a83 34#include <initializer_list>
c2ba9709
JS
35
36_GLIBCXX_BEGIN_NAMESPACE(std)
37
aac2878e
BK
38 /*
39 adjacent_find
40 all_of (C++0x)
41 any_of (C++0x)
42 binary_search
43 copy
44 copy_backward
45 copy_if (C++0x)
46 copy_n (C++0x)
47 count
48 count_if
49 equal
50 equal_range
51 fill
52 fill_n
53 find
54 find_end
55 find_first_of
56 find_if
57 find_if_not (C++0x)
58 for_each
59 generate
60 generate_n
61 includes
62 inplace_merge
63 is_heap (C++0x)
64 is_heap_until (C++0x)
65 is_partitioned (C++0x)
66 is_sorted (C++0x)
67 is_sorted_until (C++0x)
68 iter_swap
69 lexicographical_compare
70 lower_bound
71 make_heap
72 max
73 max_element
74 merge
75 min
76 min_element
77 minmax (C++0x)
78 minmax_element (C++0x)
79 mismatch
80 next_permutation
81 none_of (C++0x)
82 nth_element
83 partial_sort
84 partial_sort_copy
85 partition
86 partition_copy (C++0x)
87 partition_point (C++0x)
88 pop_heap
89 prev_permutation
90 push_heap
91 random_shuffle
92 remove
93 remove_copy
94 remove_copy_if
95 remove_if
96 replace
97 replace_copy
98 replace_copy_if
99 replace_if
100 reverse
101 reverse_copy
102 rotate
103 rotate_copy
104 search
105 search_n
106 set_difference
107 set_intersection
108 set_symmetric_difference
109 set_union
110 sort
111 sort_heap
112 stable_partition
113 stable_sort
114 swap
115 swap_ranges
116 transform
117 unique
118 unique_copy
119 upper_bound
120 */
121
122 /**
123 * @defgroup algorithms Algorithms
124 *
125 * Components for performing algorithmic operations. Includes
126 * non-modifying sequence, modifying (mutating) sequence, sorting,
127 * searching, merge, partition, heap, set, minima, maxima, and
128 * permutation operations.
129 */
130
131 /**
132 * @defgroup set_algorithms Set Operation Algorithms
133 * @ingroup algorithms
134 *
135 * These algorithms are common set operations performed on sequences
136 * that are already sorted. The number of comparisons will be
137 * linear.
138 */
139
140 /**
141 * @defgroup binary_search_algorithms Binary Search Algorithms
142 * @ingroup algorithms
143 *
144 * These algorithms are variations of a classic binary search, and
145 * all assume that the sequence being searched is already sorted.
146 *
147 * The number of comparisons will be logarithmic (and as few as
148 * possible). The number of steps through the sequence will be
149 * logarithmic for random-access iterators (e.g., pointers), and
150 * linear otherwise.
151 *
152 * The LWG has passed Defect Report 270, which notes: <em>The
153 * proposed resolution reinterprets binary search. Instead of
154 * thinking about searching for a value in a sorted range, we view
155 * that as an important special case of a more general algorithm:
156 * searching for the partition point in a partitioned range. We
157 * also add a guarantee that the old wording did not: we ensure that
158 * the upper bound is no earlier than the lower bound, that the pair
159 * returned by equal_range is a valid range, and that the first part
160 * of that pair is the lower bound.</em>
161 *
162 * The actual effect of the first sentence is that a comparison
163 * functor passed by the user doesn't necessarily need to induce a
164 * strict weak ordering relation. Rather, it partitions the range.
165 */
166
c2ba9709
JS
167 // adjacent_find
168
688a7a07
PC
169#ifdef __GXX_EXPERIMENTAL_CXX0X__
170 template<typename _IIter, typename _Predicate>
171 bool
172 all_of(_IIter, _IIter, _Predicate);
173
174 template<typename _IIter, typename _Predicate>
175 bool
176 any_of(_IIter, _IIter, _Predicate);
177#endif
178
c2ba9709
JS
179 template<typename _FIter, typename _Tp>
180 bool
181 binary_search(_FIter, _FIter, const _Tp&);
182
183 template<typename _FIter, typename _Tp, typename _Compare>
184 bool
185 binary_search(_FIter, _FIter, const _Tp&, _Compare);
186
187 template<typename _IIter, typename _OIter>
188 _OIter
189 copy(_IIter, _IIter, _OIter);
190
191 template<typename _BIter1, typename _BIter2>
192 _BIter2
4f99f3d0 193 copy_backward(_BIter1, _BIter1, _BIter2);
c2ba9709 194
688a7a07
PC
195#ifdef __GXX_EXPERIMENTAL_CXX0X__
196 template<typename _IIter, typename _OIter, typename _Predicate>
197 _OIter
198 copy_if(_IIter, _IIter, _OIter, _Predicate);
b0371776
PC
199
200 template<typename _IIter, typename _Size, typename _OIter>
201 _OIter
202 copy_n(_IIter, _Size, _OIter);
688a7a07
PC
203#endif
204
c2ba9709
JS
205 // count
206 // count_if
207
208 template<typename _FIter, typename _Tp>
209 pair<_FIter, _FIter>
210 equal_range(_FIter, _FIter, const _Tp&);
211
212 template<typename _FIter, typename _Tp, typename _Compare>
213 pair<_FIter, _FIter>
214 equal_range(_FIter, _FIter, const _Tp&, _Compare);
215
216 template<typename _FIter, typename _Tp>
217 void
218 fill(_FIter, _FIter, const _Tp&);
219
220/*
221 XXX NB: return type different from ISO C++.
222 template<typename _OIter, typename _Size, typename _Tp>
223 void
224 fill_n(_OIter, _Size, const _Tp&);
225*/
226
227 template<typename _OIter, typename _Size, typename _Tp>
228 _OIter
229 fill_n(_OIter, _Size, const _Tp&);
230
231 // find
6f95a65a
BK
232
233 template<typename _FIter1, typename _FIter2>
234 _FIter1
235 find_end(_FIter1, _FIter1, _FIter2, _FIter2);
236
237 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
238 _FIter1
239 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
240
c2ba9709
JS
241 // find_first_of
242 // find_if
c2ba9709 243
76cc1b70 244#ifdef __GXX_EXPERIMENTAL_CXX0X__
76cc1b70
PC
245 template<typename _IIter, typename _Predicate>
246 _IIter
247 find_if_not(_IIter, _IIter, _Predicate);
248#endif
249
688a7a07
PC
250 // for_each
251 // generate
252 // generate_n
253
c2ba9709
JS
254 template<typename _IIter1, typename _IIter2>
255 bool
256 includes(_IIter1, _IIter1, _IIter2, _IIter2);
257
258 template<typename _IIter1, typename _IIter2, typename _Compare>
259 bool
260 includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
261
262 template<typename _BIter>
263 void
264 inplace_merge(_BIter, _BIter, _BIter);
265
266 template<typename _BIter, typename _Compare>
267 void
268 inplace_merge(_BIter, _BIter, _BIter, _Compare);
269
e69f1bad
PC
270#ifdef __GXX_EXPERIMENTAL_CXX0X__
271 template<typename _RAIter>
272 bool
273 is_heap(_RAIter, _RAIter);
274
275 template<typename _RAIter, typename _Compare>
276 bool
277 is_heap(_RAIter, _RAIter, _Compare);
278
279 template<typename _RAIter>
280 _RAIter
281 is_heap_until(_RAIter, _RAIter);
282
283 template<typename _RAIter, typename _Compare>
284 _RAIter
285 is_heap_until(_RAIter, _RAIter, _Compare);
4b7ed13a 286
04dbd891
PC
287 template<typename _IIter, typename _Predicate>
288 bool
289 is_partitioned(_IIter, _IIter, _Predicate);
290
4b7ed13a
PC
291 template<typename _FIter>
292 bool
293 is_sorted(_FIter, _FIter);
294
295 template<typename _FIter, typename _Compare>
296 bool
297 is_sorted(_FIter, _FIter, _Compare);
298
299 template<typename _FIter>
300 _FIter
301 is_sorted_until(_FIter, _FIter);
302
303 template<typename _FIter, typename _Compare>
304 _FIter
305 is_sorted_until(_FIter, _FIter, _Compare);
e69f1bad
PC
306#endif
307
c2ba9709
JS
308 template<typename _FIter1, typename _FIter2>
309 void
310 iter_swap(_FIter1, _FIter2);
311
c2ba9709
JS
312 template<typename _FIter, typename _Tp>
313 _FIter
314 lower_bound(_FIter, _FIter, const _Tp&);
315
316 template<typename _FIter, typename _Tp, typename _Compare>
317 _FIter
318 lower_bound(_FIter, _FIter, const _Tp&, _Compare);
319
320 template<typename _RAIter>
321 void
322 make_heap(_RAIter, _RAIter);
323
324 template<typename _RAIter, typename _Compare>
325 void
326 make_heap(_RAIter, _RAIter, _Compare);
327
328 template<typename _Tp>
329 const _Tp&
330 max(const _Tp&, const _Tp&);
331
332 template<typename _Tp, typename _Compare>
333 const _Tp&
334 max(const _Tp&, const _Tp&, _Compare);
335
336 // max_element
337 // merge
338
339 template<typename _Tp>
340 const _Tp&
341 min(const _Tp&, const _Tp&);
342
343 template<typename _Tp, typename _Compare>
344 const _Tp&
345 min(const _Tp&, const _Tp&, _Compare);
346
347 // min_element
f6547b68
PC
348
349#ifdef __GXX_EXPERIMENTAL_CXX0X__
350 template<typename _Tp>
351 pair<const _Tp&, const _Tp&>
352 minmax(const _Tp&, const _Tp&);
353
354 template<typename _Tp, typename _Compare>
355 pair<const _Tp&, const _Tp&>
356 minmax(const _Tp&, const _Tp&, _Compare);
357
358 template<typename _FIter>
359 pair<_FIter, _FIter>
360 minmax_element(_FIter, _FIter);
361
362 template<typename _FIter, typename _Compare>
363 pair<_FIter, _FIter>
364 minmax_element(_FIter, _FIter, _Compare);
1edd1a83
PC
365
366 template<typename _Tp>
116a365b 367 _Tp
1edd1a83
PC
368 min(initializer_list<_Tp>);
369
370 template<typename _Tp, typename _Compare>
116a365b 371 _Tp
1edd1a83
PC
372 min(initializer_list<_Tp>, _Compare);
373
374 template<typename _Tp>
116a365b 375 _Tp
1edd1a83
PC
376 max(initializer_list<_Tp>);
377
378 template<typename _Tp, typename _Compare>
116a365b 379 _Tp
1edd1a83
PC
380 max(initializer_list<_Tp>, _Compare);
381
382 template<typename _Tp>
116a365b 383 pair<_Tp, _Tp>
1edd1a83
PC
384 minmax(initializer_list<_Tp>);
385
386 template<typename _Tp, typename _Compare>
116a365b 387 pair<_Tp, _Tp>
1edd1a83 388 minmax(initializer_list<_Tp>, _Compare);
f6547b68
PC
389#endif
390
c2ba9709
JS
391 // mismatch
392
393 template<typename _BIter>
394 bool
395 next_permutation(_BIter, _BIter);
396
397 template<typename _BIter, typename _Compare>
398 bool
399 next_permutation(_BIter, _BIter, _Compare);
400
688a7a07
PC
401#ifdef __GXX_EXPERIMENTAL_CXX0X__
402 template<typename _IIter, typename _Predicate>
403 bool
404 none_of(_IIter, _IIter, _Predicate);
405#endif
406
c2ba9709
JS
407 // nth_element
408 // partial_sort
409
410 template<typename _IIter, typename _RAIter>
411 _RAIter
412 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
413
414 template<typename _IIter, typename _RAIter, typename _Compare>
415 _RAIter
416 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
417
688a7a07
PC
418 // partition
419
420#ifdef __GXX_EXPERIMENTAL_CXX0X__
421 template<typename _IIter, typename _OIter1,
422 typename _OIter2, typename _Predicate>
423 pair<_OIter1, _OIter2>
424 partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate);
d9be9bb3
PC
425
426 template<typename _FIter, typename _Predicate>
427 _FIter
428 partition_point(_FIter, _FIter, _Predicate);
688a7a07
PC
429#endif
430
c2ba9709
JS
431 template<typename _RAIter>
432 void
433 pop_heap(_RAIter, _RAIter);
434
435 template<typename _RAIter, typename _Compare>
436 void
437 pop_heap(_RAIter, _RAIter, _Compare);
438
439 template<typename _BIter>
440 bool
441 prev_permutation(_BIter, _BIter);
442
443 template<typename _BIter, typename _Compare>
444 bool
445 prev_permutation(_BIter, _BIter, _Compare);
446
447 template<typename _RAIter>
448 void
449 push_heap(_RAIter, _RAIter);
450
451 template<typename _RAIter, typename _Compare>
452 void
453 push_heap(_RAIter, _RAIter, _Compare);
454
455 // random_shuffle
456
457 template<typename _FIter, typename _Tp>
458 _FIter
459 remove(_FIter, _FIter, const _Tp&);
460
461 template<typename _FIter, typename _Predicate>
462 _FIter
463 remove_if(_FIter, _FIter, _Predicate);
464
465 template<typename _IIter, typename _OIter, typename _Tp>
466 _OIter
467 remove_copy(_IIter, _IIter, _OIter, const _Tp&);
468
469 template<typename _IIter, typename _OIter, typename _Predicate>
470 _OIter
471 remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
472
473 // replace
474
475 template<typename _IIter, typename _OIter, typename _Tp>
476 _OIter
477 replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&);
478
479 template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp>
480 _OIter
481 replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&);
482
483 // replace_if
484
485 template<typename _BIter>
486 void
487 reverse(_BIter, _BIter);
488
489 template<typename _BIter, typename _OIter>
490 _OIter
491 reverse_copy(_BIter, _BIter, _OIter);
492
493 template<typename _FIter>
494 void
495 rotate(_FIter, _FIter, _FIter);
496
497 template<typename _FIter, typename _OIter>
498 _OIter
4f99f3d0 499 rotate_copy(_FIter, _FIter, _FIter, _OIter);
c2ba9709
JS
500
501 // search
502 // search_n
503 // set_difference
504 // set_intersection
505 // set_symmetric_difference
506 // set_union
507
508 template<typename _RAIter>
509 void
510 sort_heap(_RAIter, _RAIter);
511
512 template<typename _RAIter, typename _Compare>
513 void
514 sort_heap(_RAIter, _RAIter, _Compare);
515
516 template<typename _BIter, typename _Predicate>
517 _BIter
518 stable_partition(_BIter, _BIter, _Predicate);
519
520 template<typename _Tp>
521 void
4f99f3d0 522 swap(_Tp&, _Tp&);
c2ba9709 523
caa8b3c6
PC
524 template<typename _Tp, size_t _Nm>
525 void
526 swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
527
c2ba9709
JS
528 template<typename _FIter1, typename _FIter2>
529 _FIter2
4f99f3d0 530 swap_ranges(_FIter1, _FIter1, _FIter2);
c2ba9709
JS
531
532 // transform
533
534 template<typename _FIter>
535 _FIter
536 unique(_FIter, _FIter);
537
538 template<typename _FIter, typename _BinaryPredicate>
539 _FIter
540 unique(_FIter, _FIter, _BinaryPredicate);
541
542 // unique_copy
543
544 template<typename _FIter, typename _Tp>
545 _FIter
546 upper_bound(_FIter, _FIter, const _Tp&);
547
548 template<typename _FIter, typename _Tp, typename _Compare>
549 _FIter
550 upper_bound(_FIter, _FIter, const _Tp&, _Compare);
551
552_GLIBCXX_END_NAMESPACE
553
554_GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
555
556 template<typename _FIter>
557 _FIter
558 adjacent_find(_FIter, _FIter);
559
560 template<typename _FIter, typename _BinaryPredicate>
561 _FIter
562 adjacent_find(_FIter, _FIter, _BinaryPredicate);
563
564 template<typename _IIter, typename _Tp>
565 typename iterator_traits<_IIter>::difference_type
566 count(_IIter, _IIter, const _Tp&);
567
568 template<typename _IIter, typename _Predicate>
569 typename iterator_traits<_IIter>::difference_type
570 count_if(_IIter, _IIter, _Predicate);
571
572 template<typename _IIter1, typename _IIter2>
573 bool
574 equal(_IIter1, _IIter1, _IIter2);
575
576 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
577 bool
578 equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
579
580 template<typename _IIter, typename _Tp>
581 _IIter
582 find(_IIter, _IIter, const _Tp&);
583
c2ba9709
JS
584 template<typename _FIter1, typename _FIter2>
585 _FIter1
586 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
587
588 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
589 _FIter1
590 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
591
592 template<typename _IIter, typename _Predicate>
76cc1b70 593 _IIter
c2ba9709
JS
594 find_if(_IIter, _IIter, _Predicate);
595
596 template<typename _IIter, typename _Funct>
597 _Funct
598 for_each(_IIter, _IIter, _Funct);
599
600 template<typename _FIter, typename _Generator>
601 void
602 generate(_FIter, _FIter, _Generator);
603
4f99f3d0
BK
604/*
605 XXX NB: return type different from ISO C++.
606 template<typename _OIter, typename _Size, typename _Tp>
607 void
608 generate_n(_OIter, _Size, _Generator);
609*/
610
c2ba9709 611 template<typename _OIter, typename _Size, typename _Generator>
4f99f3d0 612 _OIter
c2ba9709
JS
613 generate_n(_OIter, _Size, _Generator);
614
615 template<typename _IIter1, typename _IIter2>
616 bool
617 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
618
619 template<typename _IIter1, typename _IIter2, typename _Compare>
620 bool
621 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
622
623 template<typename _FIter>
624 _FIter
625 max_element(_FIter, _FIter);
626
627 template<typename _FIter, typename _Compare>
628 _FIter
629 max_element(_FIter, _FIter, _Compare);
630
631 template<typename _IIter1, typename _IIter2, typename _OIter>
632 _OIter
633 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
634
635 template<typename _IIter1, typename _IIter2, typename _OIter,
636 typename _Compare>
637 _OIter
638 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
639
640 template<typename _FIter>
641 _FIter
642 min_element(_FIter, _FIter);
643
644 template<typename _FIter, typename _Compare>
645 _FIter
646 min_element(_FIter, _FIter, _Compare);
647
648 template<typename _IIter1, typename _IIter2>
649 pair<_IIter1, _IIter2>
650 mismatch(_IIter1, _IIter1, _IIter2);
651
652 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
653 pair<_IIter1, _IIter2>
654 mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
655
656 template<typename _RAIter>
657 void
658 nth_element(_RAIter, _RAIter, _RAIter);
659
660 template<typename _RAIter, typename _Compare>
661 void
662 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
663
664 template<typename _RAIter>
665 void
666 partial_sort(_RAIter, _RAIter, _RAIter);
667
668 template<typename _RAIter, typename _Compare>
669 void
670 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
671
672 template<typename _BIter, typename _Predicate>
673 _BIter
674 partition(_BIter, _BIter, _Predicate);
675
676 template<typename _RAIter>
677 void
678 random_shuffle(_RAIter, _RAIter);
679
680 template<typename _RAIter, typename _Generator>
681 void
682 random_shuffle(_RAIter, _RAIter, _Generator&);
683
684 template<typename _FIter, typename _Tp>
685 void
686 replace(_FIter, _FIter, const _Tp&, const _Tp&);
687
688 template<typename _FIter, typename _Predicate, typename _Tp>
689 void
690 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
691
692 template<typename _FIter1, typename _FIter2>
693 _FIter1
694 search(_FIter1, _FIter1, _FIter2, _FIter2);
695
696 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
697 _FIter1
698 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
699
700 template<typename _FIter, typename _Size, typename _Tp>
701 _FIter
702 search_n(_FIter, _FIter, _Size, const _Tp&);
703
704 template<typename _FIter, typename _Size, typename _Tp,
705 typename _BinaryPredicate>
706 _FIter
707 search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
708
709 template<typename _IIter1, typename _IIter2, typename _OIter>
710 _OIter
711 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
712
713 template<typename _IIter1, typename _IIter2, typename _OIter,
714 typename _Compare>
715 _OIter
716 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
717
718 template<typename _IIter1, typename _IIter2, typename _OIter>
719 _OIter
720 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
721
722 template<typename _IIter1, typename _IIter2, typename _OIter,
723 typename _Compare>
724 _OIter
725 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
726
727 template<typename _IIter1, typename _IIter2, typename _OIter>
728 _OIter
729 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
730
731 template<typename _IIter1, typename _IIter2, typename _OIter,
732 typename _Compare>
733 _OIter
734 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
735 _OIter, _Compare);
736
737 template<typename _IIter1, typename _IIter2, typename _OIter>
738 _OIter
739 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
740
741 template<typename _IIter1, typename _IIter2, typename _OIter,
742 typename _Compare>
743 _OIter
744 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
745
746 template<typename _RAIter>
747 void
748 sort(_RAIter, _RAIter);
749
750 template<typename _RAIter, typename _Compare>
751 void
752 sort(_RAIter, _RAIter, _Compare);
753
754 template<typename _RAIter>
755 void
756 stable_sort(_RAIter, _RAIter);
757
758 template<typename _RAIter, typename _Compare>
759 void
760 stable_sort(_RAIter, _RAIter, _Compare);
761
762 template<typename _IIter, typename _OIter, typename _UnaryOperation>
763 _OIter
764 transform(_IIter, _IIter, _OIter, _UnaryOperation);
765
766 template<typename _IIter1, typename _IIter2, typename _OIter,
767 typename _BinaryOperation>
768 _OIter
769 transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
770
771 template<typename _IIter, typename _OIter>
772 _OIter
773 unique_copy(_IIter, _IIter, _OIter);
774
775 template<typename _IIter, typename _OIter, typename _BinaryPredicate>
776 _OIter
777 unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
778
779_GLIBCXX_END_NESTED_NAMESPACE
780
781#ifdef _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
782# include <parallel/algorithmfwd.h>
783#endif
784
785#endif
786