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 #ifndef _GLIBCXX_ALGORITHMFWD_H
00031 #define _GLIBCXX_ALGORITHMFWD_H 1
00032
00033 #pragma GCC system_header
00034
00035 #include <bits/c++config.h>
00036 #include <bits/stl_pair.h>
00037 #include <bits/stl_iterator_base_types.h>
00038 #include <initializer_list>
00039
00040 _GLIBCXX_BEGIN_NAMESPACE(std)
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
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00189 template<typename _IIter, typename _Predicate>
00190 bool
00191 all_of(_IIter, _IIter, _Predicate);
00192
00193 template<typename _IIter, typename _Predicate>
00194 bool
00195 any_of(_IIter, _IIter, _Predicate);
00196 #endif
00197
00198 template<typename _FIter, typename _Tp>
00199 bool
00200 binary_search(_FIter, _FIter, const _Tp&);
00201
00202 template<typename _FIter, typename _Tp, typename _Compare>
00203 bool
00204 binary_search(_FIter, _FIter, const _Tp&, _Compare);
00205
00206 template<typename _IIter, typename _OIter>
00207 _OIter
00208 copy(_IIter, _IIter, _OIter);
00209
00210 template<typename _BIter1, typename _BIter2>
00211 _BIter2
00212 copy_backward(_BIter1, _BIter1, _BIter2);
00213
00214 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00215 template<typename _IIter, typename _OIter, typename _Predicate>
00216 _OIter
00217 copy_if(_IIter, _IIter, _OIter, _Predicate);
00218
00219 template<typename _IIter, typename _Size, typename _OIter>
00220 _OIter
00221 copy_n(_IIter, _Size, _OIter);
00222 #endif
00223
00224
00225
00226
00227 template<typename _FIter, typename _Tp>
00228 pair<_FIter, _FIter>
00229 equal_range(_FIter, _FIter, const _Tp&);
00230
00231 template<typename _FIter, typename _Tp, typename _Compare>
00232 pair<_FIter, _FIter>
00233 equal_range(_FIter, _FIter, const _Tp&, _Compare);
00234
00235 template<typename _FIter, typename _Tp>
00236 void
00237 fill(_FIter, _FIter, const _Tp&);
00238
00239
00240
00241
00242
00243
00244
00245
00246 template<typename _OIter, typename _Size, typename _Tp>
00247 _OIter
00248 fill_n(_OIter, _Size, const _Tp&);
00249
00250
00251
00252 template<typename _FIter1, typename _FIter2>
00253 _FIter1
00254 find_end(_FIter1, _FIter1, _FIter2, _FIter2);
00255
00256 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
00257 _FIter1
00258 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
00259
00260
00261
00262
00263 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00264 template<typename _IIter, typename _Predicate>
00265 _IIter
00266 find_if_not(_IIter, _IIter, _Predicate);
00267 #endif
00268
00269
00270
00271
00272
00273 template<typename _IIter1, typename _IIter2>
00274 bool
00275 includes(_IIter1, _IIter1, _IIter2, _IIter2);
00276
00277 template<typename _IIter1, typename _IIter2, typename _Compare>
00278 bool
00279 includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
00280
00281 template<typename _BIter>
00282 void
00283 inplace_merge(_BIter, _BIter, _BIter);
00284
00285 template<typename _BIter, typename _Compare>
00286 void
00287 inplace_merge(_BIter, _BIter, _BIter, _Compare);
00288
00289 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00290 template<typename _RAIter>
00291 bool
00292 is_heap(_RAIter, _RAIter);
00293
00294 template<typename _RAIter, typename _Compare>
00295 bool
00296 is_heap(_RAIter, _RAIter, _Compare);
00297
00298 template<typename _RAIter>
00299 _RAIter
00300 is_heap_until(_RAIter, _RAIter);
00301
00302 template<typename _RAIter, typename _Compare>
00303 _RAIter
00304 is_heap_until(_RAIter, _RAIter, _Compare);
00305
00306 template<typename _IIter, typename _Predicate>
00307 bool
00308 is_partitioned(_IIter, _IIter, _Predicate);
00309
00310 template<typename _FIter>
00311 bool
00312 is_sorted(_FIter, _FIter);
00313
00314 template<typename _FIter, typename _Compare>
00315 bool
00316 is_sorted(_FIter, _FIter, _Compare);
00317
00318 template<typename _FIter>
00319 _FIter
00320 is_sorted_until(_FIter, _FIter);
00321
00322 template<typename _FIter, typename _Compare>
00323 _FIter
00324 is_sorted_until(_FIter, _FIter, _Compare);
00325 #endif
00326
00327 template<typename _FIter1, typename _FIter2>
00328 void
00329 iter_swap(_FIter1, _FIter2);
00330
00331 template<typename _FIter, typename _Tp>
00332 _FIter
00333 lower_bound(_FIter, _FIter, const _Tp&);
00334
00335 template<typename _FIter, typename _Tp, typename _Compare>
00336 _FIter
00337 lower_bound(_FIter, _FIter, const _Tp&, _Compare);
00338
00339 template<typename _RAIter>
00340 void
00341 make_heap(_RAIter, _RAIter);
00342
00343 template<typename _RAIter, typename _Compare>
00344 void
00345 make_heap(_RAIter, _RAIter, _Compare);
00346
00347 template<typename _Tp>
00348 const _Tp&
00349 max(const _Tp&, const _Tp&);
00350
00351 template<typename _Tp, typename _Compare>
00352 const _Tp&
00353 max(const _Tp&, const _Tp&, _Compare);
00354
00355
00356
00357
00358 template<typename _Tp>
00359 const _Tp&
00360 min(const _Tp&, const _Tp&);
00361
00362 template<typename _Tp, typename _Compare>
00363 const _Tp&
00364 min(const _Tp&, const _Tp&, _Compare);
00365
00366
00367
00368 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00369 template<typename _Tp>
00370 pair<const _Tp&, const _Tp&>
00371 minmax(const _Tp&, const _Tp&);
00372
00373 template<typename _Tp, typename _Compare>
00374 pair<const _Tp&, const _Tp&>
00375 minmax(const _Tp&, const _Tp&, _Compare);
00376
00377 template<typename _FIter>
00378 pair<_FIter, _FIter>
00379 minmax_element(_FIter, _FIter);
00380
00381 template<typename _FIter, typename _Compare>
00382 pair<_FIter, _FIter>
00383 minmax_element(_FIter, _FIter, _Compare);
00384
00385 template<typename _Tp>
00386 _Tp
00387 min(initializer_list<_Tp>);
00388
00389 template<typename _Tp, typename _Compare>
00390 _Tp
00391 min(initializer_list<_Tp>, _Compare);
00392
00393 template<typename _Tp>
00394 _Tp
00395 max(initializer_list<_Tp>);
00396
00397 template<typename _Tp, typename _Compare>
00398 _Tp
00399 max(initializer_list<_Tp>, _Compare);
00400
00401 template<typename _Tp>
00402 pair<_Tp, _Tp>
00403 minmax(initializer_list<_Tp>);
00404
00405 template<typename _Tp, typename _Compare>
00406 pair<_Tp, _Tp>
00407 minmax(initializer_list<_Tp>, _Compare);
00408 #endif
00409
00410
00411
00412 template<typename _BIter>
00413 bool
00414 next_permutation(_BIter, _BIter);
00415
00416 template<typename _BIter, typename _Compare>
00417 bool
00418 next_permutation(_BIter, _BIter, _Compare);
00419
00420 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00421 template<typename _IIter, typename _Predicate>
00422 bool
00423 none_of(_IIter, _IIter, _Predicate);
00424 #endif
00425
00426
00427
00428
00429 template<typename _IIter, typename _RAIter>
00430 _RAIter
00431 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
00432
00433 template<typename _IIter, typename _RAIter, typename _Compare>
00434 _RAIter
00435 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
00436
00437
00438
00439 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00440 template<typename _IIter, typename _OIter1,
00441 typename _OIter2, typename _Predicate>
00442 pair<_OIter1, _OIter2>
00443 partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate);
00444
00445 template<typename _FIter, typename _Predicate>
00446 _FIter
00447 partition_point(_FIter, _FIter, _Predicate);
00448 #endif
00449
00450 template<typename _RAIter>
00451 void
00452 pop_heap(_RAIter, _RAIter);
00453
00454 template<typename _RAIter, typename _Compare>
00455 void
00456 pop_heap(_RAIter, _RAIter, _Compare);
00457
00458 template<typename _BIter>
00459 bool
00460 prev_permutation(_BIter, _BIter);
00461
00462 template<typename _BIter, typename _Compare>
00463 bool
00464 prev_permutation(_BIter, _BIter, _Compare);
00465
00466 template<typename _RAIter>
00467 void
00468 push_heap(_RAIter, _RAIter);
00469
00470 template<typename _RAIter, typename _Compare>
00471 void
00472 push_heap(_RAIter, _RAIter, _Compare);
00473
00474
00475
00476 template<typename _FIter, typename _Tp>
00477 _FIter
00478 remove(_FIter, _FIter, const _Tp&);
00479
00480 template<typename _FIter, typename _Predicate>
00481 _FIter
00482 remove_if(_FIter, _FIter, _Predicate);
00483
00484 template<typename _IIter, typename _OIter, typename _Tp>
00485 _OIter
00486 remove_copy(_IIter, _IIter, _OIter, const _Tp&);
00487
00488 template<typename _IIter, typename _OIter, typename _Predicate>
00489 _OIter
00490 remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
00491
00492
00493
00494 template<typename _IIter, typename _OIter, typename _Tp>
00495 _OIter
00496 replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&);
00497
00498 template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp>
00499 _OIter
00500 replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&);
00501
00502
00503
00504 template<typename _BIter>
00505 void
00506 reverse(_BIter, _BIter);
00507
00508 template<typename _BIter, typename _OIter>
00509 _OIter
00510 reverse_copy(_BIter, _BIter, _OIter);
00511
00512 template<typename _FIter>
00513 void
00514 rotate(_FIter, _FIter, _FIter);
00515
00516 template<typename _FIter, typename _OIter>
00517 _OIter
00518 rotate_copy(_FIter, _FIter, _FIter, _OIter);
00519
00520
00521
00522
00523
00524
00525
00526
00527 template<typename _RAIter>
00528 void
00529 sort_heap(_RAIter, _RAIter);
00530
00531 template<typename _RAIter, typename _Compare>
00532 void
00533 sort_heap(_RAIter, _RAIter, _Compare);
00534
00535 template<typename _BIter, typename _Predicate>
00536 _BIter
00537 stable_partition(_BIter, _BIter, _Predicate);
00538
00539 template<typename _Tp>
00540 void
00541 swap(_Tp&, _Tp&);
00542
00543 template<typename _Tp, size_t _Nm>
00544 void
00545 swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
00546
00547 template<typename _FIter1, typename _FIter2>
00548 _FIter2
00549 swap_ranges(_FIter1, _FIter1, _FIter2);
00550
00551
00552
00553 template<typename _FIter>
00554 _FIter
00555 unique(_FIter, _FIter);
00556
00557 template<typename _FIter, typename _BinaryPredicate>
00558 _FIter
00559 unique(_FIter, _FIter, _BinaryPredicate);
00560
00561
00562
00563 template<typename _FIter, typename _Tp>
00564 _FIter
00565 upper_bound(_FIter, _FIter, const _Tp&);
00566
00567 template<typename _FIter, typename _Tp, typename _Compare>
00568 _FIter
00569 upper_bound(_FIter, _FIter, const _Tp&, _Compare);
00570
00571 _GLIBCXX_END_NAMESPACE
00572
00573 _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
00574
00575 template<typename _FIter>
00576 _FIter
00577 adjacent_find(_FIter, _FIter);
00578
00579 template<typename _FIter, typename _BinaryPredicate>
00580 _FIter
00581 adjacent_find(_FIter, _FIter, _BinaryPredicate);
00582
00583 template<typename _IIter, typename _Tp>
00584 typename iterator_traits<_IIter>::difference_type
00585 count(_IIter, _IIter, const _Tp&);
00586
00587 template<typename _IIter, typename _Predicate>
00588 typename iterator_traits<_IIter>::difference_type
00589 count_if(_IIter, _IIter, _Predicate);
00590
00591 template<typename _IIter1, typename _IIter2>
00592 bool
00593 equal(_IIter1, _IIter1, _IIter2);
00594
00595 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
00596 bool
00597 equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
00598
00599 template<typename _IIter, typename _Tp>
00600 _IIter
00601 find(_IIter, _IIter, const _Tp&);
00602
00603 template<typename _FIter1, typename _FIter2>
00604 _FIter1
00605 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
00606
00607 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
00608 _FIter1
00609 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
00610
00611 template<typename _IIter, typename _Predicate>
00612 _IIter
00613 find_if(_IIter, _IIter, _Predicate);
00614
00615 template<typename _IIter, typename _Funct>
00616 _Funct
00617 for_each(_IIter, _IIter, _Funct);
00618
00619 template<typename _FIter, typename _Generator>
00620 void
00621 generate(_FIter, _FIter, _Generator);
00622
00623
00624
00625
00626
00627
00628
00629
00630 template<typename _OIter, typename _Size, typename _Generator>
00631 _OIter
00632 generate_n(_OIter, _Size, _Generator);
00633
00634 template<typename _IIter1, typename _IIter2>
00635 bool
00636 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
00637
00638 template<typename _IIter1, typename _IIter2, typename _Compare>
00639 bool
00640 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
00641
00642 template<typename _FIter>
00643 _FIter
00644 max_element(_FIter, _FIter);
00645
00646 template<typename _FIter, typename _Compare>
00647 _FIter
00648 max_element(_FIter, _FIter, _Compare);
00649
00650 template<typename _IIter1, typename _IIter2, typename _OIter>
00651 _OIter
00652 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00653
00654 template<typename _IIter1, typename _IIter2, typename _OIter,
00655 typename _Compare>
00656 _OIter
00657 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00658
00659 template<typename _FIter>
00660 _FIter
00661 min_element(_FIter, _FIter);
00662
00663 template<typename _FIter, typename _Compare>
00664 _FIter
00665 min_element(_FIter, _FIter, _Compare);
00666
00667 template<typename _IIter1, typename _IIter2>
00668 pair<_IIter1, _IIter2>
00669 mismatch(_IIter1, _IIter1, _IIter2);
00670
00671 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
00672 pair<_IIter1, _IIter2>
00673 mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
00674
00675 template<typename _RAIter>
00676 void
00677 nth_element(_RAIter, _RAIter, _RAIter);
00678
00679 template<typename _RAIter, typename _Compare>
00680 void
00681 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
00682
00683 template<typename _RAIter>
00684 void
00685 partial_sort(_RAIter, _RAIter, _RAIter);
00686
00687 template<typename _RAIter, typename _Compare>
00688 void
00689 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
00690
00691 template<typename _BIter, typename _Predicate>
00692 _BIter
00693 partition(_BIter, _BIter, _Predicate);
00694
00695 template<typename _RAIter>
00696 void
00697 random_shuffle(_RAIter, _RAIter);
00698
00699 template<typename _RAIter, typename _Generator>
00700 void
00701 random_shuffle(_RAIter, _RAIter, _Generator&);
00702
00703 template<typename _FIter, typename _Tp>
00704 void
00705 replace(_FIter, _FIter, const _Tp&, const _Tp&);
00706
00707 template<typename _FIter, typename _Predicate, typename _Tp>
00708 void
00709 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
00710
00711 template<typename _FIter1, typename _FIter2>
00712 _FIter1
00713 search(_FIter1, _FIter1, _FIter2, _FIter2);
00714
00715 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
00716 _FIter1
00717 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
00718
00719 template<typename _FIter, typename _Size, typename _Tp>
00720 _FIter
00721 search_n(_FIter, _FIter, _Size, const _Tp&);
00722
00723 template<typename _FIter, typename _Size, typename _Tp,
00724 typename _BinaryPredicate>
00725 _FIter
00726 search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
00727
00728 template<typename _IIter1, typename _IIter2, typename _OIter>
00729 _OIter
00730 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00731
00732 template<typename _IIter1, typename _IIter2, typename _OIter,
00733 typename _Compare>
00734 _OIter
00735 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00736
00737 template<typename _IIter1, typename _IIter2, typename _OIter>
00738 _OIter
00739 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00740
00741 template<typename _IIter1, typename _IIter2, typename _OIter,
00742 typename _Compare>
00743 _OIter
00744 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00745
00746 template<typename _IIter1, typename _IIter2, typename _OIter>
00747 _OIter
00748 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00749
00750 template<typename _IIter1, typename _IIter2, typename _OIter,
00751 typename _Compare>
00752 _OIter
00753 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
00754 _OIter, _Compare);
00755
00756 template<typename _IIter1, typename _IIter2, typename _OIter>
00757 _OIter
00758 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00759
00760 template<typename _IIter1, typename _IIter2, typename _OIter,
00761 typename _Compare>
00762 _OIter
00763 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00764
00765 template<typename _RAIter>
00766 void
00767 sort(_RAIter, _RAIter);
00768
00769 template<typename _RAIter, typename _Compare>
00770 void
00771 sort(_RAIter, _RAIter, _Compare);
00772
00773 template<typename _RAIter>
00774 void
00775 stable_sort(_RAIter, _RAIter);
00776
00777 template<typename _RAIter, typename _Compare>
00778 void
00779 stable_sort(_RAIter, _RAIter, _Compare);
00780
00781 template<typename _IIter, typename _OIter, typename _UnaryOperation>
00782 _OIter
00783 transform(_IIter, _IIter, _OIter, _UnaryOperation);
00784
00785 template<typename _IIter1, typename _IIter2, typename _OIter,
00786 typename _BinaryOperation>
00787 _OIter
00788 transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
00789
00790 template<typename _IIter, typename _OIter>
00791 _OIter
00792 unique_copy(_IIter, _IIter, _OIter);
00793
00794 template<typename _IIter, typename _OIter, typename _BinaryPredicate>
00795 _OIter
00796 unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
00797
00798 _GLIBCXX_END_NESTED_NAMESPACE
00799
00800 #ifdef _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
00801 # include <parallel/algorithmfwd.h>
00802 #endif
00803
00804 #endif
00805