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
);
56 template<typename _FIter1
, typename _FIter2
>
58 find_end(_FIter1
, _FIter1
, _FIter2
, _FIter2
);
60 template<typename _FIter1
, typename _FIter2
, typename _BinaryPredicate
>
62 find_end(_FIter1
, _FIter1
, _FIter2
, _FIter2
, _BinaryPredicate
);
64 template<typename _FIter1
, typename _FIter2
>
66 find_first_of(_FIter1
, _FIter1
, _FIter2
, _FIter2
);
68 template<typename _FIter1
, typename _FIter2
, typename _BinaryPredicate
>
70 find_first_of(_FIter1
, _FIter1
, _FIter2
, _FIter2
, _BinaryPredicate
);
72 template<typename _FIter
>
74 adjacent_find(_FIter
, _FIter
);
76 template<typename _FIter
, typename _BinaryPredicate
>
78 adjacent_find(_FIter
, _FIter
, _BinaryPredicate
);
80 template<typename _IIter
, typename _Tp
>
81 typename iterator_traits
<_IIter
>::difference_type
82 count(_IIter
, _IIter
, const _Tp
&);
84 template<typename _IIter
, typename _Predicate
>
85 typename iterator_traits
<_IIter
>::difference_type
86 count_if(_IIter
, _IIter
, _Predicate
);
88 template<typename _IIter1
, typename _IIter2
>
89 pair
<_IIter1
, _IIter2
>
90 mismatch(_IIter1
, _IIter1
, _IIter2
);
92 template<typename _IIter1
, typename _IIter2
, typename _BinaryPredicate
>
93 pair
<_IIter1
, _IIter2
>
94 mismatch(_IIter1
, _IIter1
, _IIter2
, _BinaryPredicate
);
96 template<typename _IIter1
, typename _IIter2
>
98 equal(_IIter1
, _IIter1
, _IIter2
);
100 template<typename _IIter1
, typename _IIter2
, typename _BinaryPredicate
>
102 equal(_IIter1
, _IIter1
, _IIter2
, _BinaryPredicate
);
104 template<typename _FIter1
, typename _FIter2
>
106 search(_FIter1
, _FIter1
, _FIter2
, _FIter2
);
108 template<typename _FIter1
, typename _FIter2
, typename _BinaryPredicate
>
110 search(_FIter1
, _FIter1
, _FIter2
, _FIter2
, _BinaryPredicate
);
112 template<typename _FIter
, typename _Size
, typename _Tp
>
114 search_n(_FIter
, _FIter
, _Size
, const _Tp
&);
116 template<typename _FIter
, typename _Size
, typename _Tp
,
117 typename _BinaryPredicate
>
119 search_n(_FIter
, _FIter
, _Size
, const _Tp
&, _BinaryPredicate
);
121 // 25.2, modifying sequence operations:
123 template<typename _IIter
, typename _OIter
>
125 copy(_IIter
, _IIter
, _OIter
);
127 template<typename _BIter1
, typename _BIter2
>
129 copy_backward (_BIter1
, _BIter1
, _BIter2
);
132 template<typename _Tp
>
136 #ifdef __GXX_EXPERIMENTAL_CXX0X__
137 template<typename _Tp
, size_t _Nm
>
139 swap(_Tp (&)[_Nm
], _Tp (&)[_Nm
]);
142 template<typename _FIter1
, typename _FIter2
>
144 swap_ranges(_FIter1 first1
, _FIter1
, _FIter2
);
146 template<typename _FIter1
, typename _FIter2
>
148 iter_swap(_FIter1
, _FIter2 b
);
150 template<typename _IIter
, typename _OIter
, typename _UnaryOperation
>
152 transform(_IIter
, _IIter
, _OIter
, _UnaryOperation op
);
154 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
155 typename _BinaryOperation
>
157 transform(_IIter1
, _IIter1
, _IIter2
, _OIter
, _BinaryOperation
);
159 template<typename _FIter
, typename _Tp
>
161 replace(_FIter
, _FIter
, const _Tp
&, const _Tp
&);
163 template<typename _FIter
, typename _Predicate
, typename _Tp
>
165 replace_if(_FIter
, _FIter
, _Predicate
, const _Tp
&);
167 template<typename _IIter
, typename _OIter
, typename _Tp
>
169 replace_copy(_IIter
, _IIter
, _OIter
, const _Tp
&, const _Tp
&);
171 template<typename _Iter
, typename _OIter
, typename _Predicate
, typename _Tp
>
173 replace_copy_if(_Iter
, _Iter
, _OIter
, _Predicate
, const _Tp
&);
175 template<typename _FIter
, typename _Tp
>
177 fill(_FIter
, _FIter
, const _Tp
&);
179 template<typename _OIter
, typename _Size
, typename _Tp
>
181 fill_n(_OIter
, _Size n
, const _Tp
&);
183 template<typename _FIter
, typename _Generator
>
185 generate(_FIter
, _FIter
, _Generator
);
187 template<typename _OIter
, typename _Size
, typename _Generator
>
189 generate_n(_OIter
, _Size
, _Generator
);
191 template<typename _FIter
, typename _Tp
>
193 remove(_FIter
, _FIter
, const _Tp
&);
195 template<typename _FIter
, typename _Predicate
>
197 remove_if(_FIter
, _FIter
, _Predicate
);
199 template<typename _IIter
, typename _OIter
, typename _Tp
>
201 remove_copy(_IIter
, _IIter
, _OIter
, const _Tp
&);
203 template<typename _IIter
, typename _OIter
, typename _Predicate
>
205 remove_copy_if(_IIter
, _IIter
, _OIter
, _Predicate
);
207 #ifdef __GXX_EXPERIMENTAL_CXX0X__
208 template<typename _IIter
, typename _OIter
, typename _Predicate
>
210 copy_if(_IIter
, _IIter
, _OIter
, _Predicate
);
213 template<typename _FIter
>
215 unique(_FIter
, _FIter
);
217 template<typename _FIter
, typename _BinaryPredicate
>
219 unique(_FIter
, _FIter
, _BinaryPredicate
);
221 template<typename _IIter
, typename _OIter
>
223 unique_copy(_IIter
, _IIter
, _OIter
);
225 template<typename _IIter
, typename _OIter
, typename _BinaryPredicate
>
227 unique_copy(_IIter
, _IIter
, _OIter
, _BinaryPredicate
);
229 template<typename _BIter
>
231 reverse(_BIter
, _BIter
);
233 template<typename _BIter
, typename _OIter
>
235 reverse_copy(_BIter
, _BIter
, _OIter
);
237 template<typename _FIter
>
239 rotate(_FIter
, _FIter
, _FIter
);
241 template<typename _FIter
, typename _OIter
>
243 rotate_copy (_FIter
, _FIter
, _FIter
, _OIter
);
245 template<typename _RAIter
>
247 random_shuffle(_RAIter
, _RAIter
);
249 template<typename _RAIter
, typename _Generator
>
251 random_shuffle(_RAIter
, _RAIter
, _Generator
&);
253 // 25.2.12, partitions:
254 template<typename _BIter
, typename _Predicate
>
256 partition(_BIter
, _BIter
, _Predicate
);
258 template<typename _BIter
, typename _Predicate
>
260 stable_partition(_BIter
, _BIter
, _Predicate
);
262 // 25.3, sorting and related operations:
264 template<typename _RAIter
>
266 sort(_RAIter
, _RAIter
);
268 template<typename _RAIter
, typename _Compare
>
270 sort(_RAIter
, _RAIter
, _Compare
);
272 template<typename _RAIter
>
274 stable_sort(_RAIter
, _RAIter
);
276 template<typename _RAIter
, typename _Compare
>
278 stable_sort(_RAIter
, _RAIter
, _Compare
);
280 template<typename _RAIter
>
282 partial_sort(_RAIter
, _RAIter
, _RAIter
);
284 template<typename _RAIter
, typename _Compare
>
286 partial_sort(_RAIter
, _RAIter
, _RAIter
, _Compare
);
288 template<typename _IIter
, typename _RAIter
>
290 partial_sort_copy(_IIter
, _IIter
, _RAIter
, _RAIter
);
292 template<typename _IIter
, typename _RAIter
, typename _Compare
>
294 partial_sort_copy(_IIter
, _IIter
, _RAIter
, _RAIter
, _Compare
);
296 template<typename _RAIter
>
298 nth_element(_RAIter
, _RAIter
, _RAIter
);
300 template<typename _RAIter
, typename _Compare
>
302 nth_element(_RAIter
, _RAIter
, _RAIter
, _Compare
);
304 // 25.3.3, binary search:
305 template<typename _FIter
, typename _Tp
>
307 lower_bound(_FIter
, _FIter
, const _Tp
&);
309 template<typename _FIter
, typename _Tp
, typename _Compare
>
311 lower_bound(_FIter
, _FIter
, const _Tp
&, _Compare
);
313 template<typename _FIter
, typename _Tp
>
315 upper_bound(_FIter
, _FIter
, const _Tp
&);
317 template<typename _FIter
, typename _Tp
, typename _Compare
>
319 upper_bound(_FIter
, _FIter
, const _Tp
&, _Compare
);
321 template<typename _FIter
, typename _Tp
>
323 equal_range(_FIter
, _FIter
, const _Tp
&);
325 template<typename _FIter
, typename _Tp
, typename _Compare
>
327 equal_range(_FIter
, _FIter
, const _Tp
&, _Compare
);
329 template<typename _FIter
, typename _Tp
>
331 binary_search(_FIter
, _FIter
, const _Tp
&);
333 template<typename _FIter
, typename _Tp
, typename _Compare
>
335 binary_search(_FIter
, _FIter
, const _Tp
&, _Compare
);
338 template<typename _IIter1
, typename _IIter2
, typename _OIter
>
340 merge(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
);
342 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
345 merge(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
, _Compare
);
347 template<typename _BIter
>
349 inplace_merge(_BIter
, _BIter
, _BIter
);
351 template<typename _BIter
, typename _Compare
>
353 inplace_merge(_BIter
, _BIter
, _BIter
, _Compare
);
355 // 25.3.5, set operations:
356 template<typename _IIter1
, typename _IIter2
>
358 includes(_IIter1
, _IIter1
, _IIter2
, _IIter2
);
360 template<typename _IIter1
, typename _IIter2
, typename _Compare
>
362 includes(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _Compare
);
364 template<typename _IIter1
, typename _IIter2
, typename _OIter
>
366 set_union(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
);
368 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
371 set_union(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
, _Compare
);
373 template<typename _IIter1
, typename _IIter2
, typename _OIter
>
375 set_intersection(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
);
377 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
380 set_intersection(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
, _Compare
);
382 template<typename _IIter1
, typename _IIter2
, typename _OIter
>
384 set_difference(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
);
386 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
389 set_difference(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
, _Compare
);
391 template<typename _IIter1
, typename _IIter2
, typename _OIter
>
393 set_symmetric_difference(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _OIter
);
395 template<typename _IIter1
, typename _IIter2
, typename _OIter
,
398 set_symmetric_difference(_IIter1
, _IIter1
, _IIter2
, _IIter2
,
401 // 25.3.6, heap operations:
402 template<typename _RAIter
>
404 push_heap(_RAIter
, _RAIter
);
406 template<typename _RAIter
, typename _Compare
>
408 push_heap(_RAIter
, _RAIter
, _Compare
);
410 template<typename _RAIter
>
412 pop_heap(_RAIter
, _RAIter
);
414 template<typename _RAIter
, typename _Compare
>
416 pop_heap(_RAIter
, _RAIter
, _Compare
);
418 template<typename _RAIter
>
420 make_heap(_RAIter
, _RAIter
);
422 template<typename _RAIter
, typename _Compare
>
424 make_heap(_RAIter
, _RAIter
, _Compare
);
426 template<typename _RAIter
>
428 sort_heap(_RAIter
, _RAIter
);
430 template<typename _RAIter
, typename _Compare
>
432 sort_heap(_RAIter
, _RAIter
, _Compare
);
434 #ifdef __GXX_EXPERIMENTAL_CXX0X__
435 template<typename _RAIter
>
437 is_heap(_RAIter
, _RAIter
);
439 template<typename _RAIter
, typename _Compare
>
441 is_heap(_RAIter
, _RAIter
, _Compare
);
443 template<typename _RAIter
>
445 is_heap_until(_RAIter
, _RAIter
);
447 template<typename _RAIter
, typename _Compare
>
449 is_heap_until(_RAIter
, _RAIter
, _Compare
);
451 template<typename _FIter
>
453 is_sorted(_FIter
, _FIter
);
455 template<typename _FIter
, typename _Compare
>
457 is_sorted(_FIter
, _FIter
, _Compare
);
459 template<typename _FIter
>
461 is_sorted_until(_FIter
, _FIter
);
463 template<typename _FIter
, typename _Compare
>
465 is_sorted_until(_FIter
, _FIter
, _Compare
);
468 // 25.3.7, minimum and maximum:
469 template<typename _Tp
>
471 min(const _Tp
&, const _Tp
&);
473 template<typename _Tp
, typename _Compare
>
475 min(const _Tp
&, const _Tp
&, _Compare
);
477 template<typename _Tp
>
479 max(const _Tp
&, const _Tp
&);
481 template<typename _Tp
, typename _Compare
>
483 max(const _Tp
&, const _Tp
&, _Compare
);
485 template<typename _FIter
>
487 min_element(_FIter
, _FIter
);
489 template<typename _FIter
, typename _Compare
>
491 min_element(_FIter
, _FIter
, _Compare
);
493 template<typename _FIter
>
495 max_element(_FIter
, _FIter
);
497 template<typename _FIter
, typename _Compare
>
499 max_element(_FIter
, _FIter
, _Compare
);
501 #ifdef __GXX_EXPERIMENTAL_CXX0X__
502 template<typename _Tp
>
503 pair
<const _Tp
&, const _Tp
&>
504 minmax(const _Tp
&, const _Tp
&);
506 template<typename _Tp
, typename _Compare
>
507 pair
<const _Tp
&, const _Tp
&>
508 minmax(const _Tp
&, const _Tp
&, _Compare
);
510 template<typename _FIter
>
512 minmax_element(_FIter
, _FIter
);
514 template<typename _FIter
, typename _Compare
>
516 minmax_element(_FIter
, _FIter
, _Compare
);
519 template<typename _IIter1
, typename _IIter2
>
521 lexicographical_compare(_IIter1
, _IIter1
, _IIter2
, _IIter2
);
523 template<typename _IIter1
, typename _IIter2
, typename _Compare
>
525 lexicographical_compare(_IIter1
, _IIter1
, _IIter2
, _IIter2
, _Compare
);
527 // 25.3.9, permutations
528 template<typename _BIter
>
530 next_permutation(_BIter
, _BIter
);
532 template<typename _BIter
, typename _Compare
>
534 next_permutation(_BIter
, _BIter
, _Compare
);
536 template<typename _BIter
>
538 prev_permutation(_BIter
, _BIter
);
540 template<typename _BIter
, typename _Compare
>
542 prev_permutation(_BIter
, _BIter
, _Compare
);