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 #ifndef _GLIBCXX_PARALLEL_ALGORITHMFWD_H
00036 #define _GLIBCXX_PARALLEL_ALGORITHMFWD_H 1
00037
00038 #pragma GCC system_header
00039
00040 #include <parallel/tags.h>
00041 #include <parallel/settings.h>
00042
00043 namespace std
00044 {
00045 namespace __parallel
00046 {
00047 template<typename _FIter>
00048 _FIter
00049 adjacent_find(_FIter, _FIter);
00050
00051 template<typename _FIter>
00052 _FIter
00053 adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag);
00054
00055 template<typename _FIter, typename _IterTag>
00056 _FIter
00057 adjacent_find_switch(_FIter, _FIter, _IterTag);
00058
00059 template<typename _RAIter>
00060 _RAIter
00061 adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag);
00062
00063
00064 template<typename _FIter, typename _BiPredicate>
00065 _FIter
00066 adjacent_find(_FIter, _FIter, _BiPredicate);
00067
00068 template<typename _FIter, typename _BiPredicate>
00069 _FIter
00070 adjacent_find(_FIter, _FIter, _BiPredicate,
00071 __gnu_parallel::sequential_tag);
00072
00073 template<typename _FIter, typename _BiPredicate, typename _IterTag>
00074 _FIter
00075 adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag);
00076
00077 template<typename _RAIter, typename _BiPredicate>
00078 _RAIter
00079 adjacent_find_switch(_RAIter, _RAIter, _BiPredicate,
00080 random_access_iterator_tag);
00081
00082
00083 template<typename _IIter, typename _Tp>
00084 typename iterator_traits<_IIter>::difference_type
00085 count(_IIter, _IIter, const _Tp&);
00086
00087 template<typename _IIter, typename _Tp>
00088 typename iterator_traits<_IIter>::difference_type
00089 count(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
00090
00091 template<typename _IIter, typename _Tp>
00092 typename iterator_traits<_IIter>::difference_type
00093 count(_IIter, _IIter, const _Tp&, __gnu_parallel::_Parallelism);
00094
00095 template<typename _IIter, typename _Tp, typename _IterTag>
00096 typename iterator_traits<_IIter>::difference_type
00097 count_switch(_IIter, _IIter, const _Tp&, _IterTag);
00098
00099 template<typename _RAIter, typename _Tp>
00100 typename iterator_traits<_RAIter>::difference_type
00101 count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag,
00102 __gnu_parallel::_Parallelism);
00103
00104
00105 template<typename _IIter, typename _Predicate>
00106 typename iterator_traits<_IIter>::difference_type
00107 count_if(_IIter, _IIter, _Predicate);
00108
00109 template<typename _IIter, typename _Predicate>
00110 typename iterator_traits<_IIter>::difference_type
00111 count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
00112
00113 template<typename _IIter, typename _Predicate>
00114 typename iterator_traits<_IIter>::difference_type
00115 count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism);
00116
00117 template<typename _IIter, typename _Predicate, typename _IterTag>
00118 typename iterator_traits<_IIter>::difference_type
00119 count_if_switch(_IIter, _IIter, _Predicate, _IterTag);
00120
00121 template<typename _RAIter, typename _Predicate>
00122 typename iterator_traits<_RAIter>::difference_type
00123 count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
00124 __gnu_parallel::_Parallelism);
00125
00126
00127 template<typename _IIter1, typename _IIter2>
00128 bool
00129 equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
00130
00131 template<typename _IIter1, typename _IIter2, typename Predicate>
00132 bool
00133 equal(_IIter1, _IIter1, _IIter2, Predicate,
00134 __gnu_parallel::sequential_tag);
00135
00136 template<typename _IIter1, typename _IIter2>
00137 bool
00138 equal(_IIter1, _IIter1, _IIter2);
00139
00140 template<typename _IIter1, typename _IIter2, typename Predicate>
00141 bool
00142 equal(_IIter1, _IIter1, _IIter2, Predicate);
00143
00144 template<typename _IIter, typename _Tp>
00145 _IIter
00146 find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
00147
00148 template<typename _IIter, typename _Tp>
00149 _IIter
00150 find(_IIter, _IIter, const _Tp& val);
00151
00152 template<typename _IIter, typename _Tp, typename _IterTag>
00153 _IIter
00154 find_switch(_IIter, _IIter, const _Tp&, _IterTag);
00155
00156 template<typename _RAIter, typename _Tp>
00157 _RAIter
00158 find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag);
00159
00160 template<typename _IIter, typename _Predicate>
00161 _IIter
00162 find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
00163
00164 template<typename _IIter, typename _Predicate>
00165 _IIter
00166 find_if(_IIter, _IIter, _Predicate);
00167
00168 template<typename _IIter, typename _Predicate, typename _IterTag>
00169 _IIter
00170 find_if_switch(_IIter, _IIter, _Predicate, _IterTag);
00171
00172 template<typename _RAIter, typename _Predicate>
00173 _RAIter
00174 find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag);
00175
00176 template<typename _IIter, typename _FIter>
00177 _IIter
00178 find_first_of(_IIter, _IIter, _FIter, _FIter,
00179 __gnu_parallel::sequential_tag);
00180
00181 template<typename _IIter, typename _FIter, typename _BiPredicate>
00182 _IIter
00183 find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
00184 __gnu_parallel::sequential_tag);
00185
00186 template<typename _IIter, typename _FIter, typename _BiPredicate>
00187 _IIter
00188 find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate);
00189
00190 template<typename _IIter, typename _FIter>
00191 _IIter
00192 find_first_of(_IIter, _IIter, _FIter, _FIter);
00193
00194 template<typename _IIter, typename _FIter,
00195 typename _IterTag1, typename _IterTag2>
00196 _IIter
00197 find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2);
00198
00199 template<typename _RAIter, typename _FIter, typename _BiPredicate,
00200 typename _IterTag>
00201 _RAIter
00202 find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate,
00203 random_access_iterator_tag, _IterTag);
00204
00205 template<typename _IIter, typename _FIter, typename _BiPredicate,
00206 typename _IterTag1, typename _IterTag2>
00207 _IIter
00208 find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
00209 _IterTag1, _IterTag2);
00210
00211
00212 template<typename _IIter, typename _Function>
00213 _Function
00214 for_each(_IIter, _IIter, _Function);
00215
00216 template<typename _IIter, typename _Function>
00217 _Function
00218 for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag);
00219
00220 template<typename _Iterator, typename _Function>
00221 _Function
00222 for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism);
00223
00224 template<typename _IIter, typename _Function, typename _IterTag>
00225 _Function
00226 for_each_switch(_IIter, _IIter, _Function, _IterTag);
00227
00228 template<typename _RAIter, typename _Function>
00229 _Function
00230 for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag,
00231 __gnu_parallel::_Parallelism);
00232
00233
00234 template<typename _FIter, typename _Generator>
00235 void
00236 generate(_FIter, _FIter, _Generator);
00237
00238 template<typename _FIter, typename _Generator>
00239 void
00240 generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag);
00241
00242 template<typename _FIter, typename _Generator>
00243 void
00244 generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism);
00245
00246 template<typename _FIter, typename _Generator, typename _IterTag>
00247 void
00248 generate_switch(_FIter, _FIter, _Generator, _IterTag);
00249
00250 template<typename _RAIter, typename _Generator>
00251 void
00252 generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag,
00253 __gnu_parallel::_Parallelism);
00254
00255 template<typename _OIter, typename _Size, typename _Generator>
00256 _OIter
00257 generate_n(_OIter, _Size, _Generator);
00258
00259 template<typename _OIter, typename _Size, typename _Generator>
00260 _OIter
00261 generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag);
00262
00263 template<typename _OIter, typename _Size, typename _Generator>
00264 _OIter
00265 generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism);
00266
00267 template<typename _OIter, typename _Size, typename _Generator,
00268 typename _IterTag>
00269 _OIter
00270 generate_n_switch(_OIter, _Size, _Generator, _IterTag);
00271
00272 template<typename _RAIter, typename _Size, typename _Generator>
00273 _RAIter
00274 generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag,
00275 __gnu_parallel::_Parallelism);
00276
00277 template<typename _IIter1, typename _IIter2>
00278 bool
00279 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2,
00280 __gnu_parallel::sequential_tag);
00281
00282 template<typename _IIter1, typename _IIter2, typename _Predicate>
00283 bool
00284 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate,
00285 __gnu_parallel::sequential_tag);
00286
00287 template<typename _IIter1, typename _IIter2>
00288 bool
00289 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
00290
00291 template<typename _IIter1, typename _IIter2, typename _Predicate>
00292 bool
00293 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate);
00294
00295 template<typename _IIter1, typename _IIter2,
00296 typename _Predicate, typename _IterTag1, typename _IterTag2>
00297 bool
00298 lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2,
00299 _Predicate, _IterTag1, _IterTag2);
00300
00301 template<typename _RAIter1, typename _RAIter2, typename _Predicate>
00302 bool
00303 lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00304 _Predicate, random_access_iterator_tag,
00305 random_access_iterator_tag);
00306
00307
00308 template<typename _IIter1, typename _IIter2>
00309 pair<_IIter1, _IIter2>
00310 mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
00311
00312 template<typename _IIter1, typename _IIter2, typename _Predicate>
00313 pair<_IIter1, _IIter2>
00314 mismatch(_IIter1, _IIter1, _IIter2, _Predicate,
00315 __gnu_parallel::sequential_tag);
00316
00317 template<typename _IIter1, typename _IIter2>
00318 pair<_IIter1, _IIter2>
00319 mismatch(_IIter1, _IIter1, _IIter2);
00320
00321 template<typename _IIter1, typename _IIter2, typename _Predicate>
00322 pair<_IIter1, _IIter2>
00323 mismatch(_IIter1, _IIter1, _IIter2, _Predicate);
00324
00325 template<typename _IIter1, typename _IIter2, typename _Predicate,
00326 typename _IterTag1, typename _IterTag2>
00327 pair<_IIter1, _IIter2>
00328 mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate,
00329 _IterTag1, _IterTag2);
00330
00331 template<typename _RAIter1, typename _RAIter2, typename _Predicate>
00332 pair<_RAIter1, _RAIter2>
00333 mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate,
00334 random_access_iterator_tag, random_access_iterator_tag);
00335
00336 template<typename _FIter1, typename _FIter2>
00337 _FIter1
00338 search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag);
00339
00340 template<typename _FIter1, typename _FIter2>
00341 _FIter1
00342 search(_FIter1, _FIter1, _FIter2, _FIter2);
00343
00344 template<typename _FIter1, typename _FIter2, typename _BiPredicate>
00345 _FIter1
00346 search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
00347 __gnu_parallel::sequential_tag);
00348
00349 template<typename _FIter1, typename _FIter2, typename _BiPredicate>
00350 _FIter1
00351 search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate);
00352
00353 template<typename _RAIter1, typename _RAIter2>
00354 _RAIter1
00355 search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00356 random_access_iterator_tag, random_access_iterator_tag);
00357
00358 template<typename _FIter1, typename _FIter2, typename _IterTag1,
00359 typename _IterTag2>
00360 _FIter1
00361 search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2);
00362
00363 template<typename _RAIter1, typename _RAIter2, typename _BiPredicate>
00364 _RAIter1
00365 search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate,
00366 random_access_iterator_tag, random_access_iterator_tag);
00367
00368 template<typename _FIter1, typename _FIter2, typename _BiPredicate,
00369 typename _IterTag1, typename _IterTag2>
00370 _FIter1
00371 search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
00372 _IterTag1, _IterTag2);
00373
00374 template<typename _FIter, typename _Integer, typename _Tp>
00375 _FIter
00376 search_n(_FIter, _FIter, _Integer, const _Tp&,
00377 __gnu_parallel::sequential_tag);
00378
00379 template<typename _FIter, typename _Integer, typename _Tp,
00380 typename _BiPredicate>
00381 _FIter
00382 search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate,
00383 __gnu_parallel::sequential_tag);
00384
00385 template<typename _FIter, typename _Integer, typename _Tp>
00386 _FIter
00387 search_n(_FIter, _FIter, _Integer, const _Tp&);
00388
00389 template<typename _FIter, typename _Integer, typename _Tp,
00390 typename _BiPredicate>
00391 _FIter
00392 search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate);
00393
00394 template<typename _RAIter, typename _Integer, typename _Tp,
00395 typename _BiPredicate>
00396 _RAIter
00397 search_n_switch(_RAIter, _RAIter, _Integer, const _Tp&,
00398 _BiPredicate, random_access_iterator_tag);
00399
00400 template<typename _FIter, typename _Integer, typename _Tp,
00401 typename _BiPredicate, typename _IterTag>
00402 _FIter
00403 search_n_switch(_FIter, _FIter, _Integer, const _Tp&,
00404 _BiPredicate, _IterTag);
00405
00406
00407 template<typename _IIter, typename _OIter, typename UnaryOperation>
00408 _OIter
00409 transform(_IIter, _IIter, _OIter, UnaryOperation);
00410
00411 template<typename _IIter, typename _OIter, typename UnaryOperation>
00412 _OIter
00413 transform(_IIter, _IIter, _OIter, UnaryOperation,
00414 __gnu_parallel::sequential_tag);
00415
00416 template<typename _IIter, typename _OIter, typename UnaryOperation>
00417 _OIter
00418 transform(_IIter, _IIter, _OIter, UnaryOperation,
00419 __gnu_parallel::_Parallelism);
00420
00421 template<typename _IIter, typename _OIter, typename UnaryOperation,
00422 typename _IterTag1, typename _IterTag2>
00423 _OIter
00424 transform1_switch(_IIter, _IIter, _OIter, UnaryOperation,
00425 _IterTag1, _IterTag2);
00426
00427
00428 template<typename _RAIIter, typename _RAOIter, typename UnaryOperation>
00429 _RAOIter
00430 transform1_switch(_RAIIter, _RAIIter, _RAOIter, UnaryOperation,
00431 random_access_iterator_tag, random_access_iterator_tag,
00432 __gnu_parallel::_Parallelism);
00433
00434
00435 template<typename _IIter1, typename _IIter2, typename _OIter,
00436 typename _BiOperation>
00437 _OIter
00438 transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation);
00439
00440 template<typename _IIter1, typename _IIter2, typename _OIter,
00441 typename _BiOperation>
00442 _OIter
00443 transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
00444 __gnu_parallel::sequential_tag);
00445
00446 template<typename _IIter1, typename _IIter2, typename _OIter,
00447 typename _BiOperation>
00448 _OIter
00449 transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
00450 __gnu_parallel::_Parallelism);
00451
00452 template<typename _RAIter1, typename _RAIter2, typename _RAIter3,
00453 typename _BiOperation>
00454 _RAIter3
00455 transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation,
00456 random_access_iterator_tag, random_access_iterator_tag,
00457 random_access_iterator_tag,
00458 __gnu_parallel::_Parallelism);
00459
00460 template<typename _IIter1, typename _IIter2, typename _OIter,
00461 typename _BiOperation, typename _Tag1,
00462 typename _Tag2, typename _Tag3>
00463 _OIter
00464 transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
00465 _Tag1, _Tag2, _Tag3);
00466
00467
00468 template<typename _FIter, typename _Tp>
00469 void
00470 replace(_FIter, _FIter, const _Tp&, const _Tp&);
00471
00472 template<typename _FIter, typename _Tp>
00473 void
00474 replace(_FIter, _FIter, const _Tp&, const _Tp&,
00475 __gnu_parallel::sequential_tag);
00476
00477 template<typename _FIter, typename _Tp>
00478 void
00479 replace(_FIter, _FIter, const _Tp&, const _Tp&,
00480 __gnu_parallel::_Parallelism);
00481
00482 template<typename _FIter, typename _Tp, typename _IterTag>
00483 void
00484 replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag);
00485
00486 template<typename _RAIter, typename _Tp>
00487 void
00488 replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&,
00489 random_access_iterator_tag, __gnu_parallel::_Parallelism);
00490
00491
00492 template<typename _FIter, typename _Predicate, typename _Tp>
00493 void
00494 replace_if(_FIter, _FIter, _Predicate, const _Tp&);
00495
00496 template<typename _FIter, typename _Predicate, typename _Tp>
00497 void
00498 replace_if(_FIter, _FIter, _Predicate, const _Tp&,
00499 __gnu_parallel::sequential_tag);
00500
00501 template<typename _FIter, typename _Predicate, typename _Tp>
00502 void
00503 replace_if(_FIter, _FIter, _Predicate, const _Tp&,
00504 __gnu_parallel::_Parallelism);
00505
00506 template<typename _FIter, typename _Predicate, typename _Tp,
00507 typename _IterTag>
00508 void
00509 replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag);
00510
00511 template<typename _RAIter, typename _Predicate, typename _Tp>
00512 void
00513 replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&,
00514 random_access_iterator_tag,
00515 __gnu_parallel::_Parallelism);
00516
00517
00518 template<typename _FIter>
00519 _FIter
00520 max_element(_FIter, _FIter);
00521
00522 template<typename _FIter>
00523 _FIter
00524 max_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
00525
00526 template<typename _FIter>
00527 _FIter
00528 max_element(_FIter, _FIter, __gnu_parallel::_Parallelism);
00529
00530 template<typename _FIter, typename _Compare>
00531 _FIter
00532 max_element(_FIter, _FIter, _Compare);
00533
00534 template<typename _FIter, typename _Compare>
00535 _FIter
00536 max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
00537
00538 template<typename _FIter, typename _Compare>
00539 _FIter
00540 max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
00541
00542 template<typename _FIter, typename _Compare, typename _IterTag>
00543 _FIter
00544 max_element_switch(_FIter, _FIter, _Compare, _IterTag);
00545
00546 template<typename _RAIter, typename _Compare>
00547 _RAIter
00548 max_element_switch(_RAIter, _RAIter, _Compare, random_access_iterator_tag,
00549 __gnu_parallel::_Parallelism);
00550
00551
00552 template<typename _IIter1, typename _IIter2, typename _OIter>
00553 _OIter
00554 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00555 __gnu_parallel::sequential_tag);
00556
00557 template<typename _IIter1, typename _IIter2, typename _OIter,
00558 typename _Compare>
00559 _OIter
00560 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
00561 __gnu_parallel::sequential_tag);
00562
00563 template<typename _IIter1, typename _IIter2, typename _OIter,
00564 typename _Compare>
00565 _OIter
00566 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
00567
00568 template<typename _IIter1, typename _IIter2, typename _OIter>
00569 _OIter
00570 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00571
00572 template<typename _IIter1, typename _IIter2, typename _OIter,
00573 typename _Compare, typename _IterTag1, typename _IterTag2,
00574 typename _IterTag3>
00575 _OIter
00576 merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
00577 _IterTag1, _IterTag2, _IterTag3);
00578
00579 template<typename _IIter1, typename _IIter2, typename _OIter,
00580 typename _Compare>
00581 _OIter
00582 merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
00583 random_access_iterator_tag, random_access_iterator_tag,
00584 random_access_iterator_tag);
00585
00586
00587 template<typename _FIter>
00588 _FIter
00589 min_element(_FIter, _FIter);
00590
00591 template<typename _FIter>
00592 _FIter
00593 min_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
00594
00595 template<typename _FIter>
00596 _FIter
00597 min_element(_FIter, _FIter, __gnu_parallel::_Parallelism parallelism_tag);
00598
00599 template<typename _FIter, typename _Compare>
00600 _FIter
00601 min_element(_FIter, _FIter, _Compare);
00602
00603 template<typename _FIter, typename _Compare>
00604 _FIter
00605 min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
00606
00607 template<typename _FIter, typename _Compare>
00608 _FIter
00609 min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
00610
00611 template<typename _FIter, typename _Compare, typename _IterTag>
00612 _FIter
00613 min_element_switch(_FIter, _FIter, _Compare, _IterTag);
00614
00615 template<typename _RAIter, typename _Compare>
00616 _RAIter
00617 min_element_switch(_RAIter, _RAIter, _Compare, random_access_iterator_tag,
00618 __gnu_parallel::_Parallelism);
00619
00620 template<typename _RAIter>
00621 void
00622 nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
00623
00624 template<typename _RAIter, typename _Compare>
00625 void
00626 nth_element(_RAIter, _RAIter, _RAIter, _Compare,
00627 __gnu_parallel::sequential_tag);
00628
00629 template<typename _RAIter, typename _Compare>
00630 void
00631 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
00632
00633 template<typename _RAIter>
00634 void
00635 nth_element(_RAIter, _RAIter, _RAIter);
00636
00637 template<typename _RAIter, typename _Compare>
00638 void
00639 partial_sort(_RAIter, _RAIter, _RAIter, _Compare,
00640 __gnu_parallel::sequential_tag);
00641
00642 template<typename _RAIter>
00643 void
00644 partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
00645
00646 template<typename _RAIter, typename _Compare>
00647 void
00648 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
00649
00650 template<typename _RAIter>
00651 void
00652 partial_sort(_RAIter, _RAIter, _RAIter);
00653
00654 template<typename _FIter, typename Predicate>
00655 _FIter
00656 partition(_FIter, _FIter, Predicate, __gnu_parallel::sequential_tag);
00657
00658 template<typename _FIter, typename Predicate>
00659 _FIter
00660 partition(_FIter, _FIter, Predicate);
00661
00662 template<typename _FIter, typename Predicate, typename _IterTag>
00663 _FIter
00664 partition_switch(_FIter, _FIter, Predicate, _IterTag);
00665
00666 template<typename _RAIter, typename Predicate>
00667 _RAIter
00668 partition_switch(_RAIter, _RAIter, Predicate, random_access_iterator_tag);
00669
00670 template<typename _RAIter>
00671 void
00672 random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
00673
00674 template<typename _RAIter, typename _RandomNumberGenerator>
00675 void
00676 random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&,
00677 __gnu_parallel::sequential_tag);
00678
00679 template<typename _RAIter>
00680 void
00681 random_shuffle(_RAIter, _RAIter);
00682
00683 template<typename _RAIter, typename _RandomNumberGenerator>
00684 void
00685 random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&);
00686
00687 template<typename _IIter1, typename _IIter2, typename _OIter>
00688 _OIter
00689 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00690 __gnu_parallel::sequential_tag);
00691
00692 template<typename _IIter1, typename _IIter2, typename _OIter,
00693 typename Predicate>
00694 _OIter
00695 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, Predicate,
00696 __gnu_parallel::sequential_tag);
00697
00698 template<typename _IIter1, typename _IIter2, typename _OIter>
00699 _OIter
00700 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00701
00702 template<typename _IIter1, typename _IIter2, typename _OIter,
00703 typename _Predicate>
00704 _OIter
00705 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
00706
00707 template<typename _IIter1, typename _IIter2, typename _Predicate,
00708 typename _OIter, typename _IterTag1, typename _IterTag2,
00709 typename _IterTag3>
00710 _OIter
00711 set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00712 _Predicate, _IterTag1, _IterTag2, _IterTag3);
00713
00714 template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00715 typename _Predicate>
00716 _Output_RAIter
00717 set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter,
00718 _Predicate, random_access_iterator_tag,
00719 random_access_iterator_tag, random_access_iterator_tag);
00720
00721 template<typename _IIter1, typename _IIter2, typename _OIter>
00722 _OIter
00723 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00724 __gnu_parallel::sequential_tag);
00725
00726 template<typename _IIter1, typename _IIter2, typename _OIter,
00727 typename _Predicate>
00728 _OIter
00729 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
00730 __gnu_parallel::sequential_tag);
00731
00732 template<typename _IIter1, typename _IIter2, typename _OIter>
00733 _OIter
00734 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00735
00736 template<typename _IIter1, typename _IIter2, typename _OIter,
00737 typename _Predicate>
00738 _OIter
00739 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
00740
00741 template<typename _IIter1, typename _IIter2, typename _Predicate,
00742 typename _OIter, typename _IterTag1, typename _IterTag2,
00743 typename _IterTag3>
00744 _OIter
00745 set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00746 _Predicate, _IterTag1, _IterTag2, _IterTag3);
00747
00748 template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00749 typename _Predicate>
00750 _Output_RAIter
00751 set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00752 _Output_RAIter, _Predicate,
00753 random_access_iterator_tag,
00754 random_access_iterator_tag,
00755 random_access_iterator_tag);
00756
00757 template<typename _IIter1, typename _IIter2, typename _OIter>
00758 _OIter
00759 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00760 __gnu_parallel::sequential_tag);
00761
00762 template<typename _IIter1, typename _IIter2, typename _OIter,
00763 typename _Predicate>
00764 _OIter
00765 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00766 _Predicate, __gnu_parallel::sequential_tag);
00767
00768 template<typename _IIter1, typename _IIter2, typename _OIter>
00769 _OIter
00770 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00771
00772 template<typename _IIter1, typename _IIter2, typename _OIter,
00773 typename _Predicate>
00774 _OIter
00775 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00776 _Predicate);
00777
00778 template<typename _IIter1, typename _IIter2, typename _Predicate,
00779 typename _OIter, typename _IterTag1, typename _IterTag2,
00780 typename _IterTag3>
00781 _OIter
00782 set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2,
00783 _OIter, _Predicate, _IterTag1, _IterTag2,
00784 _IterTag3);
00785
00786 template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00787 typename _Predicate>
00788 _Output_RAIter
00789 set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00790 _Output_RAIter, _Predicate,
00791 random_access_iterator_tag,
00792 random_access_iterator_tag,
00793 random_access_iterator_tag);
00794
00795
00796 template<typename _IIter1, typename _IIter2, typename _OIter>
00797 _OIter
00798 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00799 __gnu_parallel::sequential_tag);
00800
00801 template<typename _IIter1, typename _IIter2, typename _OIter,
00802 typename _Predicate>
00803 _OIter
00804 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
00805 __gnu_parallel::sequential_tag);
00806
00807 template<typename _IIter1, typename _IIter2, typename _OIter>
00808 _OIter
00809 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
00810
00811 template<typename _IIter1, typename _IIter2, typename _OIter,
00812 typename _Predicate>
00813 _OIter
00814 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
00815
00816 template<typename _IIter1, typename _IIter2, typename _Predicate,
00817 typename _OIter, typename _IterTag1, typename _IterTag2,
00818 typename _IterTag3>
00819 _OIter
00820 set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
00821 _Predicate, _IterTag1, _IterTag2, _IterTag3);
00822
00823 template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
00824 typename _Predicate>
00825 _Output_RAIter
00826 set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
00827 _Output_RAIter, _Predicate,
00828 random_access_iterator_tag,
00829 random_access_iterator_tag,
00830 random_access_iterator_tag);
00831
00832
00833 template<typename _RAIter>
00834 void
00835 sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
00836
00837 template<typename _RAIter, typename _Compare>
00838 void
00839 sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
00840
00841 template<typename _RAIter>
00842 void
00843 sort(_RAIter, _RAIter);
00844
00845 template<typename _RAIter, typename _Compare>
00846 void
00847 sort(_RAIter, _RAIter, _Compare);
00848
00849 template<typename _RAIter>
00850 void
00851 stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
00852
00853 template<typename _RAIter, typename _Compare>
00854 void
00855 stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
00856
00857 template<typename _RAIter>
00858 void
00859 stable_sort(_RAIter, _RAIter);
00860
00861 template<typename _RAIter, typename _Compare>
00862 void
00863 stable_sort(_RAIter, _RAIter, _Compare);
00864
00865 template<typename _IIter, typename _OIter>
00866 _OIter
00867 unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
00868
00869 template<typename _IIter, typename _OIter, typename _Predicate>
00870 _OIter
00871 unique_copy(_IIter, _IIter, _OIter, _Predicate,
00872 __gnu_parallel::sequential_tag);
00873
00874 template<typename _IIter, typename _OIter>
00875 _OIter
00876 unique_copy(_IIter, _IIter, _OIter);
00877
00878 template<typename _IIter, typename _OIter, typename _Predicate>
00879 _OIter
00880 unique_copy(_IIter, _IIter, _OIter, _Predicate);
00881
00882 template<typename _IIter, typename _OIter, typename _Predicate,
00883 typename _IterTag1, typename _IterTag2>
00884 _OIter
00885 unique_copy_switch(_IIter, _IIter, _OIter, _Predicate,
00886 _IterTag1, _IterTag2);
00887
00888 template<typename _RAIter, typename _RandomAccess_OIter, typename _Predicate>
00889 _RandomAccess_OIter
00890 unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate,
00891 random_access_iterator_tag, random_access_iterator_tag);
00892 }
00893 }
00894
00895 #endif