00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110 #ifndef _GLIBCXX_ALGORITHMFWD_H
00111 #define _GLIBCXX_ALGORITHMFWD_H 1
00112
00113 #pragma GCC system_header
00114
00115 #include <bits/c++config.h>
00116 #include <bits/stl_pair.h>
00117 #include <bits/stl_iterator_base_types.h>
00118
00119 _GLIBCXX_BEGIN_NAMESPACE(std)
00120
00121
00122
00123 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00124 template<typename _IIter, typename _Predicate>
00125 bool
00126 all_of(_IIter, _IIter, _Predicate);
00127
00128 template<typename _IIter, typename _Predicate>
00129 bool
00130 any_of(_IIter, _IIter, _Predicate);
00131 #endif
00132
00133 template<typename _FIter, typename _Tp>
00134 bool
00135 binary_search(_FIter, _FIter, const _Tp&);
00136
00137 template<typename _FIter, typename _Tp, typename _Compare>
00138 bool
00139 binary_search(_FIter, _FIter, const _Tp&, _Compare);
00140
00141 template<typename _IIter, typename _OIter>
00142 _OIter
00143 copy(_IIter, _IIter, _OIter);
00144
00145 template<typename _BIter1, typename _BIter2>
00146 _BIter2
00147 copy_backward(_BIter1, _BIter1, _BIter2);
00148
00149 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00150 template<typename _IIter, typename _OIter, typename _Predicate>
00151 _OIter
00152 copy_if(_IIter, _IIter, _OIter, _Predicate);
00153
00154 template<typename _IIter, typename _Size, typename _OIter>
00155 _OIter
00156 copy_n(_IIter, _Size, _OIter);
00157 #endif
00158
00159
00160
00161
00162 template<typename _FIter, typename _Tp>
00163 pair<_FIter, _FIter>
00164 equal_range(_FIter, _FIter, const _Tp&);
00165
00166 template<typename _FIter, typename _Tp, typename _Compare>
00167 pair<_FIter, _FIter>
00168 equal_range(_FIter, _FIter, const _Tp&, _Compare);
00169
00170 template<typename _FIter, typename _Tp>
00171 void
00172 fill(_FIter, _FIter, const _Tp&);
00173
00174
00175
00176
00177
00178
00179
00180
00181 template<typename _OIter, typename _Size, typename _Tp>
00182 _OIter
00183 fill_n(_OIter, _Size, const _Tp&);
00184
00185
00186
00187 template<typename _FIter1, typename _FIter2>
00188 _FIter1
00189 find_end(_FIter1, _FIter1, _FIter2, _FIter2);
00190
00191 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
00192 _FIter1
00193 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
00194
00195
00196
00197
00198 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00199 template<typename _IIter, typename _Predicate>
00200 _IIter
00201 find_if_not(_IIter, _IIter, _Predicate);
00202 #endif
00203
00204
00205
00206
00207
00208 template<typename _IIter1, typename _IIter2>
00209 bool
00210 includes(_IIter1, _IIter1, _IIter2, _IIter2);
00211
00212 template<typename _IIter1, typename _IIter2, typename _Compare>
00213 bool
00214 includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
00215
00216 template<typename _BIter>
00217 void
00218 inplace_merge(_BIter, _BIter, _BIter);
00219
00220 template<typename _BIter, typename _Compare>
00221 void
00222 inplace_merge(_BIter, _BIter, _BIter, _Compare);
00223
00224 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00225 template<typename _RAIter>
00226 bool
00227 is_heap(_RAIter, _RAIter);
00228
00229 template<typename _RAIter, typename _Compare>
00230 bool
00231 is_heap(_RAIter, _RAIter, _Compare);
00232
00233 template<typename _RAIter>
00234 _RAIter
00235 is_heap_until(_RAIter, _RAIter);
00236
00237 template<typename _RAIter, typename _Compare>
00238 _RAIter
00239 is_heap_until(_RAIter, _RAIter, _Compare);
00240
00241 template<typename _IIter, typename _Predicate>
00242 bool
00243 is_partitioned(_IIter, _IIter, _Predicate);
00244
00245 template<typename _FIter>
00246 bool
00247 is_sorted(_FIter, _FIter);
00248
00249 template<typename _FIter, typename _Compare>
00250 bool
00251 is_sorted(_FIter, _FIter, _Compare);
00252
00253 template<typename _FIter>
00254 _FIter
00255 is_sorted_until(_FIter, _FIter);
00256
00257 template<typename _FIter, typename _Compare>
00258 _FIter
00259 is_sorted_until(_FIter, _FIter, _Compare);
00260 #endif
00261
00262 template<typename _FIter1, typename _FIter2>
00263 void
00264 iter_swap(_FIter1, _FIter2);
00265
00266 template<typename _FIter, typename _Tp>
00267 _FIter
00268 lower_bound(_FIter, _FIter, const _Tp&);
00269
00270 template<typename _FIter, typename _Tp, typename _Compare>
00271 _FIter
00272 lower_bound(_FIter, _FIter, const _Tp&, _Compare);
00273
00274 template<typename _RAIter>
00275 void
00276 make_heap(_RAIter, _RAIter);
00277
00278 template<typename _RAIter, typename _Compare>
00279 void
00280 make_heap(_RAIter, _RAIter, _Compare);
00281
00282 template<typename _Tp>
00283 const _Tp&
00284 max(const _Tp&, const _Tp&);
00285
00286 template<typename _Tp, typename _Compare>
00287 const _Tp&
00288 max(const _Tp&, const _Tp&, _Compare);
00289
00290
00291
00292
00293 template<typename _Tp>
00294 const _Tp&
00295 min(const _Tp&, const _Tp&);
00296
00297 template<typename _Tp, typename _Compare>
00298 const _Tp&
00299 min(const _Tp&, const _Tp&, _Compare);
00300
00301
00302
00303 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00304 template<typename _Tp>
00305 pair<const _Tp&, const _Tp&>
00306 minmax(const _Tp&, const _Tp&);
00307
00308 template<typename _Tp, typename _Compare>
00309 pair<const _Tp&, const _Tp&>
00310 minmax(const _Tp&, const _Tp&, _Compare);
00311
00312 template<typename _FIter>
00313 pair<_FIter, _FIter>
00314 minmax_element(_FIter, _FIter);
00315
00316 template<typename _FIter, typename _Compare>
00317 pair<_FIter, _FIter>
00318 minmax_element(_FIter, _FIter, _Compare);
00319 #endif
00320
00321
00322
00323 template<typename _BIter>
00324 bool
00325 next_permutation(_BIter, _BIter);
00326
00327 template<typename _BIter, typename _Compare>
00328 bool
00329 next_permutation(_BIter, _BIter, _Compare);
00330
00331 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00332 template<typename _IIter, typename _Predicate>
00333 bool
00334 none_of(_IIter, _IIter, _Predicate);
00335 #endif
00336
00337
00338
00339
00340 template<typename _IIter, typename _RAIter>
00341 _RAIter
00342 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
00343
00344 template<typename _IIter, typename _RAIter, typename _Compare>
00345 _RAIter
00346 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
00347
00348
00349
00350 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00351 template<typename _IIter, typename _OIter1,
00352 typename _OIter2, typename _Predicate>
00353 pair<_OIter1, _OIter2>
00354 partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate);
00355
00356 template<typename _FIter, typename _Predicate>
00357 _FIter
00358 partition_point(_FIter, _FIter, _Predicate);
00359 #endif
00360
00361 template<typename _RAIter>
00362 void
00363 pop_heap(_RAIter, _RAIter);
00364
00365 template<typename _RAIter, typename _Compare>
00366 void
00367 pop_heap(_RAIter, _RAIter, _Compare);
00368
00369 template<typename _BIter>
00370 bool
00371 prev_permutation(_BIter, _BIter);
00372
00373 template<typename _BIter, typename _Compare>
00374 bool
00375 prev_permutation(_BIter, _BIter, _Compare);
00376
00377 template<typename _RAIter>
00378 void
00379 push_heap(_RAIter, _RAIter);
00380
00381 template<typename _RAIter, typename _Compare>
00382 void
00383 push_heap(_RAIter, _RAIter, _Compare);
00384
00385
00386
00387 template<typename _FIter, typename _Tp>
00388 _FIter
00389 remove(_FIter, _FIter, const _Tp&);
00390
00391 template<typename _FIter, typename _Predicate>
00392 _FIter
00393 remove_if(_FIter, _FIter, _Predicate);
00394
00395 template<typename _IIter, typename _OIter, typename _Tp>
00396 _OIter
00397 remove_copy(_IIter, _IIter, _OIter, const _Tp&);
00398
00399 template<typename _IIter, typename _OIter, typename _Predicate>
00400 _OIter
00401 remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
00402
00403
00404
00405 template<typename _IIter, typename _OIter, typename _Tp>
00406 _OIter
00407 replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&);
00408
00409 template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp>
00410 _OIter
00411 replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&);
00412
00413
00414
00415 template<typename _BIter>
00416 void
00417 reverse(_BIter, _BIter);
00418
00419 template<typename _BIter, typename _OIter>
00420 _OIter
00421 reverse_copy(_BIter, _BIter, _OIter);
00422
00423 template<typename _FIter>
00424 void
00425 rotate(_FIter, _FIter, _FIter);
00426
00427 template<typename _FIter, typename _OIter>
00428 _OIter
00429 rotate_copy(_FIter, _FIter, _FIter, _OIter);
00430
00431
00432
00433
00434
00435
00436
00437
00438 template<typename _RAIter>
00439 void
00440 sort_heap(_RAIter, _RAIter);
00441
00442 template<typename _RAIter, typename _Compare>
00443 void
00444 sort_heap(_RAIter, _RAIter, _Compare);
00445
00446 template<typename _BIter, typename _Predicate>
00447 _BIter
00448 stable_partition(_BIter, _BIter, _Predicate);
00449
00450 template<typename _Tp>
00451 void
00452 swap(_Tp&, _Tp&);
00453
00454 template<typename _Tp, size_t _Nm>
00455 void
00456 swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
00457
00458 template<typename _FIter1, typename _FIter2>
00459 _FIter2
00460 swap_ranges(_FIter1, _FIter1, _FIter2);
00461
00462
00463
00464 template<typename _FIter>
00465 _FIter
00466 unique(_FIter, _FIter);
00467
00468 template<typename _FIter, typename _BinaryPredicate>
00469 _FIter
00470 unique(_FIter, _FIter, _BinaryPredicate);
00471
00472
00473
00474 template<typename _FIter, typename _Tp>
00475 _FIter
00476 upper_bound(_FIter, _FIter, const _Tp&);
00477
00478 template<typename _FIter, typename _Tp, typename _Compare>
00479 _FIter
00480 upper_bound(_FIter, _FIter, const _Tp&, _Compare);
00481
00482 _GLIBCXX_END_NAMESPACE
00483
00484 _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
00485
00486 template<typename _FIter>
00487 _FIter
00488 adjacent_find(_FIter, _FIter);
00489
00490 template<typename _FIter, typename _BinaryPredicate>
00491 _FIter
00492 adjacent_find(_FIter, _FIter, _BinaryPredicate);
00493
00494 template<typename _IIter, typename _Tp>
00495 typename iterator_traits<_IIter>::difference_type
00496 count(_IIter, _IIter, const _Tp&);
00497
00498 template<typename _IIter, typename _Predicate>
00499 typename iterator_traits<_IIter>::difference_type
00500 count_if(_IIter, _IIter, _Predicate);
00501
00502 template<typename _IIter1, typename _IIter2>
00503 bool
00504 equal(_IIter1, _IIter1, _IIter2);
00505
00506 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
00507 bool
00508 equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
00509
00510 template<typename _IIter, typename _Tp>
00511 _IIter
00512 find(_IIter, _IIter, const _Tp&);
00513
00514 template<typename _FIter1, typename _FIter2>
00515 _FIter1
00516 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
00517
00518 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
00519 _FIter1
00520 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
00521
00522 template<typename _IIter, typename _Predicate>
00523 _IIter
00524 find_if(_IIter, _IIter, _Predicate);
00525
00526 template<typename _IIter, typename _Funct>
00527 _Funct
00528 for_each(_IIter, _IIter, _Funct);
00529
00530 template<typename _FIter, typename _Generator>
00531 void
00532 generate(_FIter, _FIter, _Generator);
00533
00534
00535
00536
00537
00538
00539
00540
00541 template<typename _OIter, typename _Size, typename _Generator>
00542 _OIter
00543 generate_n(_OIter, _Size, _Generator);
00544
00545 template<typename _IIter1, typename _IIter2>
00546 bool
00547 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
00548
00549 template<typename _IIter1, typename _IIter2, typename _Compare>
00550 bool
00551 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
00552
00553 template<typename _FIter>
00554 _FIter
00555 max_element(_FIter, _FIter);
00556
00557 template<typename _FIter, typename _Compare>
00558 _FIter
00559 max_element(_FIter, _FIter, _Compare);
00560
00561 template<typename _IIter1, typename _IIter2, typename _OIter>
00562 _OIter
00563 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00564
00565 template<typename _IIter1, typename _IIter2, typename _OIter,
00566 typename _Compare>
00567 _OIter
00568 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00569
00570 template<typename _FIter>
00571 _FIter
00572 min_element(_FIter, _FIter);
00573
00574 template<typename _FIter, typename _Compare>
00575 _FIter
00576 min_element(_FIter, _FIter, _Compare);
00577
00578 template<typename _IIter1, typename _IIter2>
00579 pair<_IIter1, _IIter2>
00580 mismatch(_IIter1, _IIter1, _IIter2);
00581
00582 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
00583 pair<_IIter1, _IIter2>
00584 mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
00585
00586 template<typename _RAIter>
00587 void
00588 nth_element(_RAIter, _RAIter, _RAIter);
00589
00590 template<typename _RAIter, typename _Compare>
00591 void
00592 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
00593
00594 template<typename _RAIter>
00595 void
00596 partial_sort(_RAIter, _RAIter, _RAIter);
00597
00598 template<typename _RAIter, typename _Compare>
00599 void
00600 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
00601
00602 template<typename _BIter, typename _Predicate>
00603 _BIter
00604 partition(_BIter, _BIter, _Predicate);
00605
00606 template<typename _RAIter>
00607 void
00608 random_shuffle(_RAIter, _RAIter);
00609
00610 template<typename _RAIter, typename _Generator>
00611 void
00612 random_shuffle(_RAIter, _RAIter, _Generator&);
00613
00614 template<typename _FIter, typename _Tp>
00615 void
00616 replace(_FIter, _FIter, const _Tp&, const _Tp&);
00617
00618 template<typename _FIter, typename _Predicate, typename _Tp>
00619 void
00620 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
00621
00622 template<typename _FIter1, typename _FIter2>
00623 _FIter1
00624 search(_FIter1, _FIter1, _FIter2, _FIter2);
00625
00626 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
00627 _FIter1
00628 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
00629
00630 template<typename _FIter, typename _Size, typename _Tp>
00631 _FIter
00632 search_n(_FIter, _FIter, _Size, const _Tp&);
00633
00634 template<typename _FIter, typename _Size, typename _Tp,
00635 typename _BinaryPredicate>
00636 _FIter
00637 search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
00638
00639 template<typename _IIter1, typename _IIter2, typename _OIter>
00640 _OIter
00641 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00642
00643 template<typename _IIter1, typename _IIter2, typename _OIter,
00644 typename _Compare>
00645 _OIter
00646 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00647
00648 template<typename _IIter1, typename _IIter2, typename _OIter>
00649 _OIter
00650 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00651
00652 template<typename _IIter1, typename _IIter2, typename _OIter,
00653 typename _Compare>
00654 _OIter
00655 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00656
00657 template<typename _IIter1, typename _IIter2, typename _OIter>
00658 _OIter
00659 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00660
00661 template<typename _IIter1, typename _IIter2, typename _OIter,
00662 typename _Compare>
00663 _OIter
00664 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
00665 _OIter, _Compare);
00666
00667 template<typename _IIter1, typename _IIter2, typename _OIter>
00668 _OIter
00669 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00670
00671 template<typename _IIter1, typename _IIter2, typename _OIter,
00672 typename _Compare>
00673 _OIter
00674 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00675
00676 template<typename _RAIter>
00677 void
00678 sort(_RAIter, _RAIter);
00679
00680 template<typename _RAIter, typename _Compare>
00681 void
00682 sort(_RAIter, _RAIter, _Compare);
00683
00684 template<typename _RAIter>
00685 void
00686 stable_sort(_RAIter, _RAIter);
00687
00688 template<typename _RAIter, typename _Compare>
00689 void
00690 stable_sort(_RAIter, _RAIter, _Compare);
00691
00692 template<typename _IIter, typename _OIter, typename _UnaryOperation>
00693 _OIter
00694 transform(_IIter, _IIter, _OIter, _UnaryOperation);
00695
00696 template<typename _IIter1, typename _IIter2, typename _OIter,
00697 typename _BinaryOperation>
00698 _OIter
00699 transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
00700
00701 template<typename _IIter, typename _OIter>
00702 _OIter
00703 unique_copy(_IIter, _IIter, _OIter);
00704
00705 template<typename _IIter, typename _OIter, typename _BinaryPredicate>
00706 _OIter
00707 unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
00708
00709 _GLIBCXX_END_NESTED_NAMESPACE
00710
00711 #ifdef _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
00712 # include <parallel/algorithmfwd.h>
00713 #endif
00714
00715 #endif
00716