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 template<typename _OIter, typename _Size, typename _Tp>
00240 _OIter
00241 fill_n(_OIter, _Size, const _Tp&);
00242
00243
00244
00245 template<typename _FIter1, typename _FIter2>
00246 _FIter1
00247 find_end(_FIter1, _FIter1, _FIter2, _FIter2);
00248
00249 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
00250 _FIter1
00251 find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
00252
00253
00254
00255
00256 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00257 template<typename _IIter, typename _Predicate>
00258 _IIter
00259 find_if_not(_IIter, _IIter, _Predicate);
00260 #endif
00261
00262
00263
00264
00265
00266 template<typename _IIter1, typename _IIter2>
00267 bool
00268 includes(_IIter1, _IIter1, _IIter2, _IIter2);
00269
00270 template<typename _IIter1, typename _IIter2, typename _Compare>
00271 bool
00272 includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
00273
00274 template<typename _BIter>
00275 void
00276 inplace_merge(_BIter, _BIter, _BIter);
00277
00278 template<typename _BIter, typename _Compare>
00279 void
00280 inplace_merge(_BIter, _BIter, _BIter, _Compare);
00281
00282 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00283 template<typename _RAIter>
00284 bool
00285 is_heap(_RAIter, _RAIter);
00286
00287 template<typename _RAIter, typename _Compare>
00288 bool
00289 is_heap(_RAIter, _RAIter, _Compare);
00290
00291 template<typename _RAIter>
00292 _RAIter
00293 is_heap_until(_RAIter, _RAIter);
00294
00295 template<typename _RAIter, typename _Compare>
00296 _RAIter
00297 is_heap_until(_RAIter, _RAIter, _Compare);
00298
00299 template<typename _IIter, typename _Predicate>
00300 bool
00301 is_partitioned(_IIter, _IIter, _Predicate);
00302
00303 template<typename _FIter>
00304 bool
00305 is_sorted(_FIter, _FIter);
00306
00307 template<typename _FIter, typename _Compare>
00308 bool
00309 is_sorted(_FIter, _FIter, _Compare);
00310
00311 template<typename _FIter>
00312 _FIter
00313 is_sorted_until(_FIter, _FIter);
00314
00315 template<typename _FIter, typename _Compare>
00316 _FIter
00317 is_sorted_until(_FIter, _FIter, _Compare);
00318 #endif
00319
00320 template<typename _FIter1, typename _FIter2>
00321 void
00322 iter_swap(_FIter1, _FIter2);
00323
00324 template<typename _FIter, typename _Tp>
00325 _FIter
00326 lower_bound(_FIter, _FIter, const _Tp&);
00327
00328 template<typename _FIter, typename _Tp, typename _Compare>
00329 _FIter
00330 lower_bound(_FIter, _FIter, const _Tp&, _Compare);
00331
00332 template<typename _RAIter>
00333 void
00334 make_heap(_RAIter, _RAIter);
00335
00336 template<typename _RAIter, typename _Compare>
00337 void
00338 make_heap(_RAIter, _RAIter, _Compare);
00339
00340 template<typename _Tp>
00341 const _Tp&
00342 max(const _Tp&, const _Tp&);
00343
00344 template<typename _Tp, typename _Compare>
00345 const _Tp&
00346 max(const _Tp&, const _Tp&, _Compare);
00347
00348
00349
00350
00351 template<typename _Tp>
00352 const _Tp&
00353 min(const _Tp&, const _Tp&);
00354
00355 template<typename _Tp, typename _Compare>
00356 const _Tp&
00357 min(const _Tp&, const _Tp&, _Compare);
00358
00359
00360
00361 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00362 template<typename _Tp>
00363 pair<const _Tp&, const _Tp&>
00364 minmax(const _Tp&, const _Tp&);
00365
00366 template<typename _Tp, typename _Compare>
00367 pair<const _Tp&, const _Tp&>
00368 minmax(const _Tp&, const _Tp&, _Compare);
00369
00370 template<typename _FIter>
00371 pair<_FIter, _FIter>
00372 minmax_element(_FIter, _FIter);
00373
00374 template<typename _FIter, typename _Compare>
00375 pair<_FIter, _FIter>
00376 minmax_element(_FIter, _FIter, _Compare);
00377
00378 template<typename _Tp>
00379 _Tp
00380 min(initializer_list<_Tp>);
00381
00382 template<typename _Tp, typename _Compare>
00383 _Tp
00384 min(initializer_list<_Tp>, _Compare);
00385
00386 template<typename _Tp>
00387 _Tp
00388 max(initializer_list<_Tp>);
00389
00390 template<typename _Tp, typename _Compare>
00391 _Tp
00392 max(initializer_list<_Tp>, _Compare);
00393
00394 template<typename _Tp>
00395 pair<_Tp, _Tp>
00396 minmax(initializer_list<_Tp>);
00397
00398 template<typename _Tp, typename _Compare>
00399 pair<_Tp, _Tp>
00400 minmax(initializer_list<_Tp>, _Compare);
00401 #endif
00402
00403
00404
00405 template<typename _BIter>
00406 bool
00407 next_permutation(_BIter, _BIter);
00408
00409 template<typename _BIter, typename _Compare>
00410 bool
00411 next_permutation(_BIter, _BIter, _Compare);
00412
00413 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00414 template<typename _IIter, typename _Predicate>
00415 bool
00416 none_of(_IIter, _IIter, _Predicate);
00417 #endif
00418
00419
00420
00421
00422 template<typename _IIter, typename _RAIter>
00423 _RAIter
00424 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter);
00425
00426 template<typename _IIter, typename _RAIter, typename _Compare>
00427 _RAIter
00428 partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare);
00429
00430
00431
00432 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00433 template<typename _IIter, typename _OIter1,
00434 typename _OIter2, typename _Predicate>
00435 pair<_OIter1, _OIter2>
00436 partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate);
00437
00438 template<typename _FIter, typename _Predicate>
00439 _FIter
00440 partition_point(_FIter, _FIter, _Predicate);
00441 #endif
00442
00443 template<typename _RAIter>
00444 void
00445 pop_heap(_RAIter, _RAIter);
00446
00447 template<typename _RAIter, typename _Compare>
00448 void
00449 pop_heap(_RAIter, _RAIter, _Compare);
00450
00451 template<typename _BIter>
00452 bool
00453 prev_permutation(_BIter, _BIter);
00454
00455 template<typename _BIter, typename _Compare>
00456 bool
00457 prev_permutation(_BIter, _BIter, _Compare);
00458
00459 template<typename _RAIter>
00460 void
00461 push_heap(_RAIter, _RAIter);
00462
00463 template<typename _RAIter, typename _Compare>
00464 void
00465 push_heap(_RAIter, _RAIter, _Compare);
00466
00467
00468
00469 template<typename _FIter, typename _Tp>
00470 _FIter
00471 remove(_FIter, _FIter, const _Tp&);
00472
00473 template<typename _FIter, typename _Predicate>
00474 _FIter
00475 remove_if(_FIter, _FIter, _Predicate);
00476
00477 template<typename _IIter, typename _OIter, typename _Tp>
00478 _OIter
00479 remove_copy(_IIter, _IIter, _OIter, const _Tp&);
00480
00481 template<typename _IIter, typename _OIter, typename _Predicate>
00482 _OIter
00483 remove_copy_if(_IIter, _IIter, _OIter, _Predicate);
00484
00485
00486
00487 template<typename _IIter, typename _OIter, typename _Tp>
00488 _OIter
00489 replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&);
00490
00491 template<typename _Iter, typename _OIter, typename _Predicate, typename _Tp>
00492 _OIter
00493 replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&);
00494
00495
00496
00497 template<typename _BIter>
00498 void
00499 reverse(_BIter, _BIter);
00500
00501 template<typename _BIter, typename _OIter>
00502 _OIter
00503 reverse_copy(_BIter, _BIter, _OIter);
00504
00505 template<typename _FIter>
00506 void
00507 rotate(_FIter, _FIter, _FIter);
00508
00509 template<typename _FIter, typename _OIter>
00510 _OIter
00511 rotate_copy(_FIter, _FIter, _FIter, _OIter);
00512
00513
00514
00515
00516
00517
00518
00519
00520 template<typename _RAIter>
00521 void
00522 sort_heap(_RAIter, _RAIter);
00523
00524 template<typename _RAIter, typename _Compare>
00525 void
00526 sort_heap(_RAIter, _RAIter, _Compare);
00527
00528 template<typename _BIter, typename _Predicate>
00529 _BIter
00530 stable_partition(_BIter, _BIter, _Predicate);
00531
00532 template<typename _Tp>
00533 void
00534 swap(_Tp&, _Tp&);
00535
00536 template<typename _Tp, size_t _Nm>
00537 void
00538 swap(_Tp (&)[_Nm], _Tp (&)[_Nm]);
00539
00540 template<typename _FIter1, typename _FIter2>
00541 _FIter2
00542 swap_ranges(_FIter1, _FIter1, _FIter2);
00543
00544
00545
00546 template<typename _FIter>
00547 _FIter
00548 unique(_FIter, _FIter);
00549
00550 template<typename _FIter, typename _BinaryPredicate>
00551 _FIter
00552 unique(_FIter, _FIter, _BinaryPredicate);
00553
00554
00555
00556 template<typename _FIter, typename _Tp>
00557 _FIter
00558 upper_bound(_FIter, _FIter, const _Tp&);
00559
00560 template<typename _FIter, typename _Tp, typename _Compare>
00561 _FIter
00562 upper_bound(_FIter, _FIter, const _Tp&, _Compare);
00563
00564 _GLIBCXX_END_NAMESPACE
00565
00566 _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
00567
00568 template<typename _FIter>
00569 _FIter
00570 adjacent_find(_FIter, _FIter);
00571
00572 template<typename _FIter, typename _BinaryPredicate>
00573 _FIter
00574 adjacent_find(_FIter, _FIter, _BinaryPredicate);
00575
00576 template<typename _IIter, typename _Tp>
00577 typename iterator_traits<_IIter>::difference_type
00578 count(_IIter, _IIter, const _Tp&);
00579
00580 template<typename _IIter, typename _Predicate>
00581 typename iterator_traits<_IIter>::difference_type
00582 count_if(_IIter, _IIter, _Predicate);
00583
00584 template<typename _IIter1, typename _IIter2>
00585 bool
00586 equal(_IIter1, _IIter1, _IIter2);
00587
00588 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
00589 bool
00590 equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
00591
00592 template<typename _IIter, typename _Tp>
00593 _IIter
00594 find(_IIter, _IIter, const _Tp&);
00595
00596 template<typename _FIter1, typename _FIter2>
00597 _FIter1
00598 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2);
00599
00600 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
00601 _FIter1
00602 find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
00603
00604 template<typename _IIter, typename _Predicate>
00605 _IIter
00606 find_if(_IIter, _IIter, _Predicate);
00607
00608 template<typename _IIter, typename _Funct>
00609 _Funct
00610 for_each(_IIter, _IIter, _Funct);
00611
00612 template<typename _FIter, typename _Generator>
00613 void
00614 generate(_FIter, _FIter, _Generator);
00615
00616 template<typename _OIter, typename _Size, typename _Generator>
00617 _OIter
00618 generate_n(_OIter, _Size, _Generator);
00619
00620 template<typename _IIter1, typename _IIter2>
00621 bool
00622 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
00623
00624 template<typename _IIter1, typename _IIter2, typename _Compare>
00625 bool
00626 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare);
00627
00628 template<typename _FIter>
00629 _FIter
00630 max_element(_FIter, _FIter);
00631
00632 template<typename _FIter, typename _Compare>
00633 _FIter
00634 max_element(_FIter, _FIter, _Compare);
00635
00636 template<typename _IIter1, typename _IIter2, typename _OIter>
00637 _OIter
00638 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00639
00640 template<typename _IIter1, typename _IIter2, typename _OIter,
00641 typename _Compare>
00642 _OIter
00643 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00644
00645 template<typename _FIter>
00646 _FIter
00647 min_element(_FIter, _FIter);
00648
00649 template<typename _FIter, typename _Compare>
00650 _FIter
00651 min_element(_FIter, _FIter, _Compare);
00652
00653 template<typename _IIter1, typename _IIter2>
00654 pair<_IIter1, _IIter2>
00655 mismatch(_IIter1, _IIter1, _IIter2);
00656
00657 template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
00658 pair<_IIter1, _IIter2>
00659 mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate);
00660
00661 template<typename _RAIter>
00662 void
00663 nth_element(_RAIter, _RAIter, _RAIter);
00664
00665 template<typename _RAIter, typename _Compare>
00666 void
00667 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
00668
00669 template<typename _RAIter>
00670 void
00671 partial_sort(_RAIter, _RAIter, _RAIter);
00672
00673 template<typename _RAIter, typename _Compare>
00674 void
00675 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
00676
00677 template<typename _BIter, typename _Predicate>
00678 _BIter
00679 partition(_BIter, _BIter, _Predicate);
00680
00681 template<typename _RAIter>
00682 void
00683 random_shuffle(_RAIter, _RAIter);
00684
00685 template<typename _RAIter, typename _Generator>
00686 void
00687 random_shuffle(_RAIter, _RAIter, _Generator&);
00688
00689 template<typename _FIter, typename _Tp>
00690 void
00691 replace(_FIter, _FIter, const _Tp&, const _Tp&);
00692
00693 template<typename _FIter, typename _Predicate, typename _Tp>
00694 void
00695 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
00696
00697 template<typename _FIter1, typename _FIter2>
00698 _FIter1
00699 search(_FIter1, _FIter1, _FIter2, _FIter2);
00700
00701 template<typename _FIter1, typename _FIter2, typename _BinaryPredicate>
00702 _FIter1
00703 search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate);
00704
00705 template<typename _FIter, typename _Size, typename _Tp>
00706 _FIter
00707 search_n(_FIter, _FIter, _Size, const _Tp&);
00708
00709 template<typename _FIter, typename _Size, typename _Tp,
00710 typename _BinaryPredicate>
00711 _FIter
00712 search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate);
00713
00714 template<typename _IIter1, typename _IIter2, typename _OIter>
00715 _OIter
00716 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00717
00718 template<typename _IIter1, typename _IIter2, typename _OIter,
00719 typename _Compare>
00720 _OIter
00721 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00722
00723 template<typename _IIter1, typename _IIter2, typename _OIter>
00724 _OIter
00725 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00726
00727 template<typename _IIter1, typename _IIter2, typename _OIter,
00728 typename _Compare>
00729 _OIter
00730 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00731
00732 template<typename _IIter1, typename _IIter2, typename _OIter>
00733 _OIter
00734 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00735
00736 template<typename _IIter1, typename _IIter2, typename _OIter,
00737 typename _Compare>
00738 _OIter
00739 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2,
00740 _OIter, _Compare);
00741
00742 template<typename _IIter1, typename _IIter2, typename _OIter>
00743 _OIter
00744 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00745
00746 template<typename _IIter1, typename _IIter2, typename _OIter,
00747 typename _Compare>
00748 _OIter
00749 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00750
00751 template<typename _RAIter>
00752 void
00753 sort(_RAIter, _RAIter);
00754
00755 template<typename _RAIter, typename _Compare>
00756 void
00757 sort(_RAIter, _RAIter, _Compare);
00758
00759 template<typename _RAIter>
00760 void
00761 stable_sort(_RAIter, _RAIter);
00762
00763 template<typename _RAIter, typename _Compare>
00764 void
00765 stable_sort(_RAIter, _RAIter, _Compare);
00766
00767 template<typename _IIter, typename _OIter, typename _UnaryOperation>
00768 _OIter
00769 transform(_IIter, _IIter, _OIter, _UnaryOperation);
00770
00771 template<typename _IIter1, typename _IIter2, typename _OIter,
00772 typename _BinaryOperation>
00773 _OIter
00774 transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation);
00775
00776 template<typename _IIter, typename _OIter>
00777 _OIter
00778 unique_copy(_IIter, _IIter, _OIter);
00779
00780 template<typename _IIter, typename _OIter, typename _BinaryPredicate>
00781 _OIter
00782 unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate);
00783
00784 _GLIBCXX_END_NESTED_NAMESPACE
00785
00786 #ifdef _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
00787 # include <parallel/algorithmfwd.h>
00788 #endif
00789
00790 #endif
00791