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