3 // Copyright (C) 2007, 2008 Free Software Foundation, Inc.
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)
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 // 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,
25 // 25.1, non-modifying sequence operations:
26 template<typename _IIter
, typename _Funct
>
28 for_each(_IIter
, _IIter
, _Funct
);
30 template<typename _IIter
, typename _Tp
>
32 find(_IIter
, _IIter
, const _Tp
&);
34 template<typename _IIter
, typename _Predicate
>
36 find_if(_IIter
, _IIter
, _Predicate
);
38 #ifdef __GXX_EXPERIMENTAL_CXX0X__
39 template<typename _IIter
, typename _Predicate
>
41 all_of(_IIter
, _IIter
, _Predicate
);
43 template<typename _IIter
, typename _Predicate
>
45 any_of(_IIter
, _IIter
, _Predicate
);
47 template<typename _IIter
, typename _Predicate
>
49 none_of(_IIter
, _IIter
, _Predicate
);
51 template<typename _IIter
, typename _Predicate
>
53 find_if_not(_IIter
, _IIter
, _Predicate
);
55 template<typename _IIter
, typename _Predicate
>
57 is_partitioned(_IIter
, _IIter
, _Predicate
);
59 template<typename _FIter
, typename _Predicate
>
61 partition_point(_FIter
, _FIter
, _Predicate
);
64 template<typename _FIter1
, typename _FIter2
>
66 find_end(_FIter1
, _FIter1
, _FIter2
, _FIter2
);
68 template<typename _FIter1
, typename _FIter2
, typename _BinaryPredicate
>
70 find_end(_FIter1
, _FIter1
, _FIter2
, _FIter2
, _BinaryPredicate
);
72 template<typename _FIter1
, typename _FIter2
>
74 find_first_of(_FIter1
, _FIter1
, _FIter2
, _FIter2
);
76 template<typename _FIter1
, typename _FIter2
, typename _BinaryPredicate
>
78 find_first_of(_FIter1
, _FIter1
, _FIter2
, _FIter2
, _BinaryPredicate
);
80 template<typename _FIter
>
82 adjacent_find(_FIter
, _FIter
);
84 template<typename _FIter
, typename _BinaryPredicate
>
86 adjacent_find(_FIter
, _FIter
, _BinaryPredicate
);
88 template<typename _IIter
, typename _Tp
>
89 typename iterator_traits
<_IIter
>::difference_type
90 count(_IIter
, _IIter
, const _Tp
&);
92 template<typename _IIter
, typename _Predicate
>
93 typename iterator_traits
<_IIter
>::difference_type
94 count_if(_IIter
, _IIter
, _Predicate
);
96 template<typename _IIter1
, typename _IIter2
>
97 pair
<_IIter1
, _IIter2
>
98 mismatch(_IIter1
, _IIter1
, _IIter2
);
100 template<typename _IIter1
, typename _IIter2
, typename _BinaryPredicate
>
101 pair
<_IIter1
, _IIter2
>
102 mismatch(_IIter1
, _IIter1
, _IIter2
, _BinaryPredicate
);
104 template<typename _IIter1
, typename _IIter2
>
106 equal(_IIter1
, _IIter1
, _IIter2
);
108 template<typename _IIter1
, typename _IIter2
, typename _BinaryPredicate
>
110 equal(_IIter1
, _IIter1
, _IIter2
, _BinaryPredicate
);
112 template<typename _FIter1
, typename _FIter2
>
114 search(_FIter1
, _FIter1
, _FIter2
, _FIter2
);
116 template<typename _FIter1
, typename _FIter2
, typename _BinaryPredicate
>
118 search(_FIter1
, _FIter1
, _FIter2
, _FIter2
, _BinaryPredicate
);
120 template<typename _FIter
, typename _Size
, typename _Tp
>
122 search_n(_FIter
, _FIter
, _Size
, const _Tp
&);
124 template<typename _FIter
, typename _Size
, typename _Tp
,
125 typename _BinaryPredicate
>
127 search_n(_FIter
, _FIter
, _Size
, const _Tp
&, _BinaryPredicate
);
129 // 25.2, modifying sequence operations:
131 template<typename _IIter
, typename _OIter
>
133 copy(_IIter
, _IIter
, _OIter
);
135 template<typename _BIter1
, typename _BIter2
>
137 copy_backward (_BIter1
, _BIter1
, _BIter2
);
140 template<typename _Tp
>
144 #ifdef __GXX_EXPERIMENTAL_CXX0X__
145 template<typename _Tp
, size_t _Nm
>
147 swap(_Tp (&)[_Nm
], _Tp (&)[_Nm
]);
150 template<typename _FIter1
, typename _FIter2
>
152 swap_ranges(_FIter1 first1
, _FIter1
, _FIter2
);
154 template<typename _FIter1
, typename _FIter2
>
156 iter_swap(_FIter1
, _FIter2 b
);
158 template<typename _IIter
, typename _OIter
, typename _UnaryOperation
>
160 transform(_IIter
, _IIter
, _OIter
, _UnaryOperation op
);
162 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
163 typename _BinaryOperation
>
165 transform(_IIter1
, _IIter1
, _IIter2
, _OIter
, _BinaryOperation
);
167 template<typename _FIter
, typename _Tp
>
169 replace(_FIter
, _FIter
, const _Tp
&, const _Tp
&);
171 template<typename _FIter
, typename _Predicate
, typename _Tp
>
173 replace_if(_FIter
, _FIter
, _Predicate
, const _Tp
&);
175 template<typename _IIter
, typename _OIter
, typename _Tp
>
177 replace_copy(_IIter
, _IIter
, _OIter
, const _Tp
&, const _Tp
&);
179 template<typename _Iter
, typename _OIter
, typename _Predicate
, typename _Tp
>
181 replace_copy_if(_Iter
, _Iter
, _OIter
, _Predicate
, const _Tp
&);
183 template<typename _FIter
, typename _Tp
>
185 fill(_FIter
, _FIter
, const _Tp
&);
187 template<typename _OIter
, typename _Size
, typename _Tp
>
189 fill_n(_OIter
, _Size n
, const _Tp
&);
191 template<typename _FIter
, typename _Generator
>
193 generate(_FIter
, _FIter
, _Generator
);
195 template<typename _OIter
, typename _Size
, typename _Generator
>
197 generate_n(_OIter
, _Size
, _Generator
);
199 template<typename _FIter
, typename _Tp
>
201 remove(_FIter
, _FIter
, const _Tp
&);
203 template<typename _FIter
, typename _Predicate
>
205 remove_if(_FIter
, _FIter
, _Predicate
);
207 template<typename _IIter
, typename _OIter
, typename _Tp
>
209 remove_copy(_IIter
, _IIter
, _OIter
, const _Tp
&);
211 template<typename _IIter
, typename _OIter
, typename _Predicate
>
213 remove_copy_if(_IIter
, _IIter
, _OIter
, _Predicate
);
215 #ifdef __GXX_EXPERIMENTAL_CXX0X__
216 template<typename _IIter
, typename _OIter
, typename _Predicate
>
218 copy_if(_IIter
, _IIter
, _OIter
, _Predicate
);
220 template<typename _IIter
, typename _OIter1
,
221 typename _OIter2
, typename _Predicate
>
222 pair
<_OIter1
, _OIter2
>
223 partition_copy(_IIter
, _IIter
, _OIter1
, _OIter2
, _Predicate
);
226 template<typename _FIter
>
228 unique(_FIter
, _FIter
);
230 template<typename _FIter
, typename _BinaryPredicate
>
232 unique(_FIter
, _FIter
, _BinaryPredicate
);
234 template<typename _IIter
, typename _OIter
>
236 unique_copy(_IIter
, _IIter
, _OIter
);
238 template<typename _IIter
, typename _OIter
, typename _BinaryPredicate
>
240 unique_copy(_IIter
, _IIter
, _OIter
, _BinaryPredicate
);
242 template<typename _BIter
>
244 reverse(_BIter
, _BIter
);
246 template<typename _BIter
, typename _OIter
>
248 reverse_copy(_BIter
, _BIter
, _OIter
);
250 template<typename _FIter
>
252 rotate(_FIter
, _FIter
, _FIter
);
254 template<typename _FIter
, typename _OIter
>
256 rotate_copy (_FIter
, _FIter
, _FIter
, _OIter
);
258 template<typename _RAIter
>
260 random_shuffle(_RAIter
, _RAIter
);
262 template<typename _RAIter
, typename _Generator
>
264 random_shuffle(_RAIter
, _RAIter
, _Generator
&);
266 // 25.2.12, partitions:
267 template<typename _BIter
, typename _Predicate
>
269 partition(_BIter
, _BIter
, _Predicate
);
271 template<typename _BIter
, typename _Predicate
>
273 stable_partition(_BIter
, _BIter
, _Predicate
);
275 // 25.3, sorting and related operations:
277 template<typename _RAIter
>
279 sort(_RAIter
, _RAIter
);
281 template<typename _RAIter
, typename _Compare
>
283 sort(_RAIter
, _RAIter
, _Compare
);
285 template<typename _RAIter
>
287 stable_sort(_RAIter
, _RAIter
);
289 template<typename _RAIter
, typename _Compare
>
291 stable_sort(_RAIter
, _RAIter
, _Compare
);
293 template<typename _RAIter
>
295 partial_sort(_RAIter
, _RAIter
, _RAIter
);
297 template<typename _RAIter
, typename _Compare
>
299 partial_sort(_RAIter
, _RAIter
, _RAIter
, _Compare
);
301 template<typename _IIter
, typename _RAIter
>
303 partial_sort_copy(_IIter
, _IIter
, _RAIter
, _RAIter
);
305 template<typename _IIter
, typename _RAIter
, typename _Compare
>
307 partial_sort_copy(_IIter
, _IIter
, _RAIter
, _RAIter
, _Compare
);
309 template<typename _RAIter
>
311 nth_element(_RAIter
, _RAIter
, _RAIter
);
313 template<typename _RAIter
, typename _Compare
>
315 nth_element(_RAIter
, _RAIter
, _RAIter
, _Compare
);
317 // 25.3.3, binary search:
318 template<typename _FIter
, typename _Tp
>
320 lower_bound(_FIter
, _FIter
, const _Tp
&);
322 template<typename _FIter
, typename _Tp
, typename _Compare
>
324 lower_bound(_FIter
, _FIter
, const _Tp
&, _Compare
);
326 template<typename _FIter
, typename _Tp
>
328 upper_bound(_FIter
, _FIter
, const _Tp
&);
330 template<typename _FIter
, typename _Tp
, typename _Compare
>
332 upper_bound(_FIter
, _FIter
, const _Tp
&, _Compare
);
334 template<typename _FIter
, typename _Tp
>
336 equal_range(_FIter
, _FIter
, const _Tp
&);
338 template<typename _FIter
, typename _Tp
, typename _Compare
>
340 equal_range(_FIter
, _FIter
, const _Tp
&, _Compare
);
342 template<typename _FIter
, typename _Tp
>
344 binary_search(_FIter
, _FIter
, const _Tp
&);
346 template<typename _FIter
, typename _Tp
, typename _Compare
>
348 binary_search(_FIter
, _FIter
, const _Tp
&, _Compare
);
351 template<typename _IIter1
, typename _IIter2
, typename _OIter
>
353 merge(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
);
355 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
358 merge(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
, _Compare
);
360 template<typename _BIter
>
362 inplace_merge(_BIter
, _BIter
, _BIter
);
364 template<typename _BIter
, typename _Compare
>
366 inplace_merge(_BIter
, _BIter
, _BIter
, _Compare
);
368 // 25.3.5, set operations:
369 template<typename _IIter1
, typename _IIter2
>
371 includes(_IIter1
, _IIter1
, _IIter2
, _IIter2
);
373 template<typename _IIter1
, typename _IIter2
, typename _Compare
>
375 includes(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _Compare
);
377 template<typename _IIter1
, typename _IIter2
, typename _OIter
>
379 set_union(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
);
381 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
384 set_union(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
, _Compare
);
386 template<typename _IIter1
, typename _IIter2
, typename _OIter
>
388 set_intersection(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
);
390 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
393 set_intersection(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
, _Compare
);
395 template<typename _IIter1
, typename _IIter2
, typename _OIter
>
397 set_difference(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
);
399 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
402 set_difference(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
, _Compare
);
404 template<typename _IIter1
, typename _IIter2
, typename _OIter
>
406 set_symmetric_difference(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
);
408 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
411 set_symmetric_difference(_IIter1
, _IIter1
, _IIter2
, _IIter2
,
414 // 25.3.6, heap operations:
415 template<typename _RAIter
>
417 push_heap(_RAIter
, _RAIter
);
419 template<typename _RAIter
, typename _Compare
>
421 push_heap(_RAIter
, _RAIter
, _Compare
);
423 template<typename _RAIter
>
425 pop_heap(_RAIter
, _RAIter
);
427 template<typename _RAIter
, typename _Compare
>
429 pop_heap(_RAIter
, _RAIter
, _Compare
);
431 template<typename _RAIter
>
433 make_heap(_RAIter
, _RAIter
);
435 template<typename _RAIter
, typename _Compare
>
437 make_heap(_RAIter
, _RAIter
, _Compare
);
439 template<typename _RAIter
>
441 sort_heap(_RAIter
, _RAIter
);
443 template<typename _RAIter
, typename _Compare
>
445 sort_heap(_RAIter
, _RAIter
, _Compare
);
447 #ifdef __GXX_EXPERIMENTAL_CXX0X__
448 template<typename _RAIter
>
450 is_heap(_RAIter
, _RAIter
);
452 template<typename _RAIter
, typename _Compare
>
454 is_heap(_RAIter
, _RAIter
, _Compare
);
456 template<typename _RAIter
>
458 is_heap_until(_RAIter
, _RAIter
);
460 template<typename _RAIter
, typename _Compare
>
462 is_heap_until(_RAIter
, _RAIter
, _Compare
);
464 template<typename _FIter
>
466 is_sorted(_FIter
, _FIter
);
468 template<typename _FIter
, typename _Compare
>
470 is_sorted(_FIter
, _FIter
, _Compare
);
472 template<typename _FIter
>
474 is_sorted_until(_FIter
, _FIter
);
476 template<typename _FIter
, typename _Compare
>
478 is_sorted_until(_FIter
, _FIter
, _Compare
);
481 // 25.3.7, minimum and maximum:
482 template<typename _Tp
>
484 min(const _Tp
&, const _Tp
&);
486 template<typename _Tp
, typename _Compare
>
488 min(const _Tp
&, const _Tp
&, _Compare
);
490 template<typename _Tp
>
492 max(const _Tp
&, const _Tp
&);
494 template<typename _Tp
, typename _Compare
>
496 max(const _Tp
&, const _Tp
&, _Compare
);
498 template<typename _FIter
>
500 min_element(_FIter
, _FIter
);
502 template<typename _FIter
, typename _Compare
>
504 min_element(_FIter
, _FIter
, _Compare
);
506 template<typename _FIter
>
508 max_element(_FIter
, _FIter
);
510 template<typename _FIter
, typename _Compare
>
512 max_element(_FIter
, _FIter
, _Compare
);
514 #ifdef __GXX_EXPERIMENTAL_CXX0X__
515 template<typename _Tp
>
516 pair
<const _Tp
&, const _Tp
&>
517 minmax(const _Tp
&, const _Tp
&);
519 template<typename _Tp
, typename _Compare
>
520 pair
<const _Tp
&, const _Tp
&>
521 minmax(const _Tp
&, const _Tp
&, _Compare
);
523 template<typename _FIter
>
525 minmax_element(_FIter
, _FIter
);
527 template<typename _FIter
, typename _Compare
>
529 minmax_element(_FIter
, _FIter
, _Compare
);
532 template<typename _IIter1
, typename _IIter2
>
534 lexicographical_compare(_IIter1
, _IIter1
, _IIter2
, _IIter2
);
536 template<typename _IIter1
, typename _IIter2
, typename _Compare
>
538 lexicographical_compare(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _Compare
);
540 // 25.3.9, permutations
541 template<typename _BIter
>
543 next_permutation(_BIter
, _BIter
);
545 template<typename _BIter
, typename _Compare
>
547 next_permutation(_BIter
, _BIter
, _Compare
);
549 template<typename _BIter
>
551 prev_permutation(_BIter
, _BIter
);
553 template<typename _BIter
, typename _Compare
>
555 prev_permutation(_BIter
, _BIter
, _Compare
);