parallel/algorithmfwd.h

Go to the documentation of this file.
00001 // <algorithm> parallel extensions -*- C++ -*-
00002 
00003 // Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
00004 //
00005 // This file is part of the GNU ISO C++ Library.  This library is free
00006 // software; you can redistribute it and/or modify it under the terms
00007 // of the GNU General Public License as published by the Free Software
00008 // Foundation; either version 3, or (at your option) any later
00009 // version.
00010 
00011 // This library is distributed in the hope that it will be useful, but
00012 // WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // General Public License for more details.
00015 
00016 // Under Section 7 of GPL version 3, you are granted additional
00017 // permissions described in the GCC Runtime Library Exception, version
00018 // 3.1, as published by the Free Software Foundation.
00019 
00020 // You should have received a copy of the GNU General Public License and
00021 // a copy of the GCC Runtime Library Exception along with this program;
00022 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
00023 // <http://www.gnu.org/licenses/>.
00024 
00025 /** @file parallel/algorithmfwd.h
00026  *  This file is a GNU parallel extension to the Standard C++ Library.
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   // algobase.h
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   // algo.h
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 } // end namespace __parallel
00896 } // end namespace std
00897 
00898 #endif /* _GLIBCXX_PARALLEL_ALGORITHMFWD_H */

Generated on 19 Jun 2018 for libstdc++ by  doxygen 1.6.1