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