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