libstdc++
parallel/algorithmfwd.h
Go to the documentation of this file.
1 // <parallel/algorithm> Forward declarations -*- C++ -*-
2 
3 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
4 //
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the terms
7 // of the GNU General Public License as published by the Free Software
8 // Foundation; either version 3, or (at your option) any later
9 // version.
10 
11 // This library is distributed in the hope that it will be useful, but
12 // WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // General Public License for more details.
15 
16 // Under Section 7 of GPL version 3, you are granted additional
17 // permissions described in the GCC Runtime Library Exception, version
18 // 3.1, as published by the Free Software Foundation.
19 
20 // You should have received a copy of the GNU General Public License and
21 // a copy of the GCC Runtime Library Exception along with this program;
22 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23 // <http://www.gnu.org/licenses/>.
24 
25 /** @file parallel/algorithmfwd.h
26  * This file is a GNU parallel extension to the Standard C++ Library.
27  */
28 
29 #ifndef _GLIBCXX_PARALLEL_ALGORITHMFWD_H
30 #define _GLIBCXX_PARALLEL_ALGORITHMFWD_H 1
31 
32 #pragma GCC system_header
33 
34 #include <parallel/tags.h>
35 #include <parallel/settings.h>
36 
37 namespace std _GLIBCXX_VISIBILITY(default)
38 {
39 namespace __parallel
40 {
41  template<typename _FIter>
42  _FIter
43  adjacent_find(_FIter, _FIter);
44 
45  template<typename _FIter>
46  _FIter
47  adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag);
48 
49  template<typename _FIter, typename _IterTag>
50  _FIter
51  __adjacent_find_switch(_FIter, _FIter, _IterTag);
52 
53  template<typename _RAIter>
54  _RAIter
55  __adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag);
56 
57 
58  template<typename _FIter, typename _BiPredicate>
59  _FIter
60  adjacent_find(_FIter, _FIter, _BiPredicate);
61 
62  template<typename _FIter, typename _BiPredicate>
63  _FIter
64  adjacent_find(_FIter, _FIter, _BiPredicate,
66 
67  template<typename _FIter, typename _BiPredicate, typename _IterTag>
68  _FIter
69  __adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag);
70 
71  template<typename _RAIter, typename _BiPredicate>
72  _RAIter
73  __adjacent_find_switch(_RAIter, _RAIter, _BiPredicate,
74  random_access_iterator_tag);
75 
76 
77  template<typename _IIter, typename _Tp>
78  typename iterator_traits<_IIter>::difference_type
79  count(_IIter, _IIter, const _Tp&);
80 
81  template<typename _IIter, typename _Tp>
82  typename iterator_traits<_IIter>::difference_type
83  count(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
84 
85  template<typename _IIter, typename _Tp>
86  typename iterator_traits<_IIter>::difference_type
87  count(_IIter, _IIter, const _Tp&, __gnu_parallel::_Parallelism);
88 
89  template<typename _IIter, typename _Tp, typename _IterTag>
90  typename iterator_traits<_IIter>::difference_type
91  __count_switch(_IIter, _IIter, const _Tp&, _IterTag);
92 
93  template<typename _RAIter, typename _Tp>
94  typename iterator_traits<_RAIter>::difference_type
95  __count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag,
96  __gnu_parallel::_Parallelism __parallelism
98 
99 
100  template<typename _IIter, typename _Predicate>
101  typename iterator_traits<_IIter>::difference_type
102  count_if(_IIter, _IIter, _Predicate);
103 
104  template<typename _IIter, typename _Predicate>
105  typename iterator_traits<_IIter>::difference_type
106  count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
107 
108  template<typename _IIter, typename _Predicate>
109  typename iterator_traits<_IIter>::difference_type
110  count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism);
111 
112  template<typename _IIter, typename _Predicate, typename _IterTag>
113  typename iterator_traits<_IIter>::difference_type
114  __count_if_switch(_IIter, _IIter, _Predicate, _IterTag);
115 
116  template<typename _RAIter, typename _Predicate>
117  typename iterator_traits<_RAIter>::difference_type
118  __count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
119  __gnu_parallel::_Parallelism __parallelism
121 
122  // algobase.h
123  template<typename _IIter1, typename _IIter2>
124  bool
125  equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
126 
127  template<typename _IIter1, typename _IIter2, typename _Predicate>
128  bool
129  equal(_IIter1, _IIter1, _IIter2, _Predicate,
131 
132  template<typename _IIter1, typename _IIter2>
133  _GLIBCXX20_CONSTEXPR
134  bool
135  equal(_IIter1, _IIter1, _IIter2);
136 
137  template<typename _IIter1, typename _IIter2, typename _Predicate>
138  _GLIBCXX20_CONSTEXPR
139  bool
140  equal(_IIter1, _IIter1, _IIter2, _Predicate);
141 
142  template<typename _IIter, typename _Tp>
143  _IIter
144  find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
145 
146  template<typename _IIter, typename _Tp>
147  _IIter
148  find(_IIter, _IIter, const _Tp& __val);
149 
150  template<typename _IIter, typename _Tp, typename _IterTag>
151  _IIter
152  __find_switch(_IIter, _IIter, const _Tp&, _IterTag);
153 
154  template<typename _RAIter, typename _Tp>
155  _RAIter
156  __find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag);
157 
158  template<typename _IIter, typename _Predicate>
159  _IIter
160  find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
161 
162  template<typename _IIter, typename _Predicate>
163  _IIter
164  find_if(_IIter, _IIter, _Predicate);
165 
166  template<typename _IIter, typename _Predicate, typename _IterTag>
167  _IIter
168  __find_if_switch(_IIter, _IIter, _Predicate, _IterTag);
169 
170  template<typename _RAIter, typename _Predicate>
171  _RAIter
172  __find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag);
173 
174  template<typename _IIter, typename _FIter>
175  _IIter
176  find_first_of(_IIter, _IIter, _FIter, _FIter,
178 
179  template<typename _IIter, typename _FIter, typename _BiPredicate>
180  _IIter
181  find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
183 
184  template<typename _IIter, typename _FIter, typename _BiPredicate>
185  _IIter
186  find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate);
187 
188  template<typename _IIter, typename _FIter>
189  _IIter
190  find_first_of(_IIter, _IIter, _FIter, _FIter);
191 
192  template<typename _IIter, typename _FIter,
193  typename _IterTag1, typename _IterTag2>
194  _IIter
195  __find_first_of_switch(
196  _IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2);
197 
198  template<typename _RAIter, typename _FIter, typename _BiPredicate,
199  typename _IterTag>
200  _RAIter
201  __find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate,
202  random_access_iterator_tag, _IterTag);
203 
204  template<typename _IIter, typename _FIter, typename _BiPredicate,
205  typename _IterTag1, typename _IterTag2>
206  _IIter
207  __find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
208  _IterTag1, _IterTag2);
209 
210 
211  template<typename _IIter, typename _Function>
212  _Function
213  for_each(_IIter, _IIter, _Function);
214 
215  template<typename _IIter, typename _Function>
216  _Function
217  for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag);
218 
219  template<typename _Iterator, typename _Function>
220  _Function
221  for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism);
222 
223  template<typename _IIter, typename _Function, typename _IterTag>
224  _Function
225  __for_each_switch(_IIter, _IIter, _Function, _IterTag);
226 
227  template<typename _RAIter, typename _Function>
228  _Function
229  __for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag,
230  __gnu_parallel::_Parallelism __parallelism
232 
233 
234  template<typename _FIter, typename _Generator>
235  void
236  generate(_FIter, _FIter, _Generator);
237 
238  template<typename _FIter, typename _Generator>
239  void
240  generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag);
241 
242  template<typename _FIter, typename _Generator>
243  void
244  generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism);
245 
246  template<typename _FIter, typename _Generator, typename _IterTag>
247  void
248  __generate_switch(_FIter, _FIter, _Generator, _IterTag);
249 
250  template<typename _RAIter, typename _Generator>
251  void
252  __generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag,
253  __gnu_parallel::_Parallelism __parallelism
255 
256  template<typename _OIter, typename _Size, typename _Generator>
257  _OIter
258  generate_n(_OIter, _Size, _Generator);
259 
260  template<typename _OIter, typename _Size, typename _Generator>
261  _OIter
262  generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag);
263 
264  template<typename _OIter, typename _Size, typename _Generator>
265  _OIter
266  generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism);
267 
268  template<typename _OIter, typename _Size, typename _Generator,
269  typename _IterTag>
270  _OIter
271  __generate_n_switch(_OIter, _Size, _Generator, _IterTag);
272 
273  template<typename _RAIter, typename _Size, typename _Generator>
274  _RAIter
275  __generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag,
276  __gnu_parallel::_Parallelism __parallelism
278 
279  template<typename _IIter1, typename _IIter2>
280  bool
281  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2,
283 
284  template<typename _IIter1, typename _IIter2, typename _Predicate>
285  bool
286  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate,
288 
289  template<typename _IIter1, typename _IIter2>
290  _GLIBCXX20_CONSTEXPR
291  bool
292  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
293 
294  template<typename _IIter1, typename _IIter2, typename _Predicate>
295  _GLIBCXX20_CONSTEXPR
296  bool
297  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate);
298 
299  template<typename _IIter1, typename _IIter2,
300  typename _Predicate, typename _IterTag1, typename _IterTag2>
301  bool
302  __lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2,
303  _Predicate, _IterTag1, _IterTag2);
304 
305  template<typename _RAIter1, typename _RAIter2, typename _Predicate>
306  bool
307  __lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
308  _Predicate, random_access_iterator_tag,
309  random_access_iterator_tag);
310 
311  // algo.h
312  template<typename _IIter1, typename _IIter2>
313  pair<_IIter1, _IIter2>
314  mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
315 
316  template<typename _IIter1, typename _IIter2, typename _Predicate>
317  pair<_IIter1, _IIter2>
318  mismatch(_IIter1, _IIter1, _IIter2, _Predicate,
320 
321  template<typename _IIter1, typename _IIter2>
322  pair<_IIter1, _IIter2>
323  mismatch(_IIter1, _IIter1, _IIter2);
324 
325  template<typename _IIter1, typename _IIter2, typename _Predicate>
326  pair<_IIter1, _IIter2>
327  mismatch(_IIter1, _IIter1, _IIter2, _Predicate);
328 
329  template<typename _IIter1, typename _IIter2, typename _Predicate,
330  typename _IterTag1, typename _IterTag2>
331  pair<_IIter1, _IIter2>
332  __mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate,
333  _IterTag1, _IterTag2);
334 
335  template<typename _RAIter1, typename _RAIter2, typename _Predicate>
336  pair<_RAIter1, _RAIter2>
337  __mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate,
338  random_access_iterator_tag, random_access_iterator_tag);
339 
340  template<typename _FIter1, typename _FIter2>
341  _FIter1
342  search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag);
343 
344  template<typename _FIter1, typename _FIter2>
345  _FIter1
346  search(_FIter1, _FIter1, _FIter2, _FIter2);
347 
348  template<typename _FIter1, typename _FIter2, typename _BiPredicate>
349  _FIter1
350  search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
352 
353  template<typename _FIter1, typename _FIter2, typename _BiPredicate>
354  _FIter1
355  search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate);
356 
357  template<typename _RAIter1, typename _RAIter2>
358  _RAIter1
359  __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
360  random_access_iterator_tag, random_access_iterator_tag);
361 
362  template<typename _FIter1, typename _FIter2, typename _IterTag1,
363  typename _IterTag2>
364  _FIter1
365  __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2);
366 
367  template<typename _RAIter1, typename _RAIter2, typename _BiPredicate>
368  _RAIter1
369  __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate,
370  random_access_iterator_tag, random_access_iterator_tag);
371 
372  template<typename _FIter1, typename _FIter2, typename _BiPredicate,
373  typename _IterTag1, typename _IterTag2>
374  _FIter1
375  __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
376  _IterTag1, _IterTag2);
377 
378  template<typename _FIter, typename _Integer, typename _Tp>
379  _FIter
380  search_n(_FIter, _FIter, _Integer, const _Tp&,
382 
383  template<typename _FIter, typename _Integer, typename _Tp,
384  typename _BiPredicate>
385  _FIter
386  search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate,
388 
389  template<typename _FIter, typename _Integer, typename _Tp>
390  _FIter
391  search_n(_FIter, _FIter, _Integer, const _Tp&);
392 
393  template<typename _FIter, typename _Integer, typename _Tp,
394  typename _BiPredicate>
395  _FIter
396  search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate);
397 
398  template<typename _RAIter, typename _Integer, typename _Tp,
399  typename _BiPredicate>
400  _RAIter
401  __search_n_switch(_RAIter, _RAIter, _Integer, const _Tp&,
402  _BiPredicate, random_access_iterator_tag);
403 
404  template<typename _FIter, typename _Integer, typename _Tp,
405  typename _BiPredicate, typename _IterTag>
406  _FIter
407  __search_n_switch(_FIter, _FIter, _Integer, const _Tp&,
408  _BiPredicate, _IterTag);
409 
410 
411  template<typename _IIter, typename _OIter, typename _UnaryOperation>
412  _OIter
413  transform(_IIter, _IIter, _OIter, _UnaryOperation);
414 
415  template<typename _IIter, typename _OIter, typename _UnaryOperation>
416  _OIter
417  transform(_IIter, _IIter, _OIter, _UnaryOperation,
419 
420  template<typename _IIter, typename _OIter, typename _UnaryOperation>
421  _OIter
422  transform(_IIter, _IIter, _OIter, _UnaryOperation,
424 
425  template<typename _IIter, typename _OIter, typename _UnaryOperation,
426  typename _IterTag1, typename _IterTag2>
427  _OIter
428  __transform1_switch(_IIter, _IIter, _OIter, _UnaryOperation,
429  _IterTag1, _IterTag2);
430 
431 
432  template<typename _RAIIter, typename _RAOIter, typename _UnaryOperation>
433  _RAOIter
434  __transform1_switch(_RAIIter, _RAIIter, _RAOIter, _UnaryOperation,
435  random_access_iterator_tag, random_access_iterator_tag,
436  __gnu_parallel::_Parallelism __parallelism
438 
439 
440  template<typename _IIter1, typename _IIter2, typename _OIter,
441  typename _BiOperation>
442  _OIter
443  transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation);
444 
445  template<typename _IIter1, typename _IIter2, typename _OIter,
446  typename _BiOperation>
447  _OIter
448  transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
450 
451  template<typename _IIter1, typename _IIter2, typename _OIter,
452  typename _BiOperation>
453  _OIter
454  transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
456 
457  template<typename _RAIter1, typename _RAIter2, typename _RAIter3,
458  typename _BiOperation>
459  _RAIter3
460  __transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation,
461  random_access_iterator_tag, random_access_iterator_tag,
462  random_access_iterator_tag,
463  __gnu_parallel::_Parallelism __parallelism
465 
466  template<typename _IIter1, typename _IIter2, typename _OIter,
467  typename _BiOperation, typename _Tag1,
468  typename _Tag2, typename _Tag3>
469  _OIter
470  __transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
471  _Tag1, _Tag2, _Tag3);
472 
473 
474  template<typename _FIter, typename _Tp>
475  void
476  replace(_FIter, _FIter, const _Tp&, const _Tp&);
477 
478  template<typename _FIter, typename _Tp>
479  void
480  replace(_FIter, _FIter, const _Tp&, const _Tp&,
482 
483  template<typename _FIter, typename _Tp>
484  void
485  replace(_FIter, _FIter, const _Tp&, const _Tp&,
487 
488  template<typename _FIter, typename _Tp, typename _IterTag>
489  void
490  __replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag);
491 
492  template<typename _RAIter, typename _Tp>
493  void
494  __replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&,
495  random_access_iterator_tag, __gnu_parallel::_Parallelism);
496 
497 
498  template<typename _FIter, typename _Predicate, typename _Tp>
499  void
500  replace_if(_FIter, _FIter, _Predicate, const _Tp&);
501 
502  template<typename _FIter, typename _Predicate, typename _Tp>
503  void
504  replace_if(_FIter, _FIter, _Predicate, const _Tp&,
506 
507  template<typename _FIter, typename _Predicate, typename _Tp>
508  void
509  replace_if(_FIter, _FIter, _Predicate, const _Tp&,
511 
512  template<typename _FIter, typename _Predicate, typename _Tp,
513  typename _IterTag>
514  void
515  __replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag);
516 
517  template<typename _RAIter, typename _Predicate, typename _Tp>
518  void
519  __replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&,
520  random_access_iterator_tag,
522 
523 
524  template<typename _FIter>
525  _FIter
526  max_element(_FIter, _FIter);
527 
528  template<typename _FIter>
529  _FIter
530  max_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
531 
532  template<typename _FIter>
533  _FIter
534  max_element(_FIter, _FIter, __gnu_parallel::_Parallelism);
535 
536  template<typename _FIter, typename _Compare>
537  _FIter
538  max_element(_FIter, _FIter, _Compare);
539 
540  template<typename _FIter, typename _Compare>
541  _FIter
542  max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
543 
544  template<typename _FIter, typename _Compare>
545  _FIter
546  max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
547 
548  template<typename _FIter, typename _Compare, typename _IterTag>
549  _FIter
550  __max_element_switch(_FIter, _FIter, _Compare, _IterTag);
551 
552  template<typename _RAIter, typename _Compare>
553  _RAIter
554  __max_element_switch(
555  _RAIter, _RAIter, _Compare, random_access_iterator_tag,
556  __gnu_parallel::_Parallelism __parallelism
558 
559 
560  template<typename _IIter1, typename _IIter2, typename _OIter>
561  _OIter
562  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
564 
565  template<typename _IIter1, typename _IIter2, typename _OIter,
566  typename _Compare>
567  _OIter
568  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
570 
571  template<typename _IIter1, typename _IIter2, typename _OIter,
572  typename _Compare>
573  _OIter
574  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
575 
576  template<typename _IIter1, typename _IIter2, typename _OIter>
577  _OIter
578  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
579 
580  template<typename _IIter1, typename _IIter2, typename _OIter,
581  typename _Compare, typename _IterTag1, typename _IterTag2,
582  typename _IterTag3>
583  _OIter
584  __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
585  _IterTag1, _IterTag2, _IterTag3);
586 
587  template<typename _IIter1, typename _IIter2, typename _OIter,
588  typename _Compare>
589  _OIter
590  __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
591  random_access_iterator_tag, random_access_iterator_tag,
592  random_access_iterator_tag);
593 
594 
595  template<typename _FIter>
596  _FIter
597  min_element(_FIter, _FIter);
598 
599  template<typename _FIter>
600  _FIter
601  min_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
602 
603  template<typename _FIter>
604  _FIter
605  min_element(_FIter, _FIter,
606  __gnu_parallel::_Parallelism __parallelism_tag);
607 
608  template<typename _FIter, typename _Compare>
609  _FIter
610  min_element(_FIter, _FIter, _Compare);
611 
612  template<typename _FIter, typename _Compare>
613  _FIter
614  min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
615 
616  template<typename _FIter, typename _Compare>
617  _FIter
618  min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
619 
620  template<typename _FIter, typename _Compare, typename _IterTag>
621  _FIter
622  __min_element_switch(_FIter, _FIter, _Compare, _IterTag);
623 
624  template<typename _RAIter, typename _Compare>
625  _RAIter
626  __min_element_switch(
627  _RAIter, _RAIter, _Compare, random_access_iterator_tag,
628  __gnu_parallel::_Parallelism __parallelism
630 
631  template<typename _RAIter>
632  void
633  nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
634 
635  template<typename _RAIter, typename _Compare>
636  void
637  nth_element(_RAIter, _RAIter, _RAIter, _Compare,
639 
640  template<typename _RAIter, typename _Compare>
641  void
642  nth_element(_RAIter, _RAIter, _RAIter, _Compare);
643 
644  template<typename _RAIter>
645  void
646  nth_element(_RAIter, _RAIter, _RAIter);
647 
648  template<typename _RAIter, typename _Compare>
649  void
650  partial_sort(_RAIter, _RAIter, _RAIter, _Compare,
652 
653  template<typename _RAIter>
654  void
655  partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
656 
657  template<typename _RAIter, typename _Compare>
658  void
659  partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
660 
661  template<typename _RAIter>
662  void
663  partial_sort(_RAIter, _RAIter, _RAIter);
664 
665  template<typename _FIter, typename _Predicate>
666  _FIter
667  partition(_FIter, _FIter, _Predicate, __gnu_parallel::sequential_tag);
668 
669  template<typename _FIter, typename _Predicate>
670  _FIter
671  partition(_FIter, _FIter, _Predicate);
672 
673  template<typename _FIter, typename _Predicate, typename _IterTag>
674  _FIter
675  __partition_switch(_FIter, _FIter, _Predicate, _IterTag);
676 
677  template<typename _RAIter, typename _Predicate>
678  _RAIter
679  __partition_switch(
680  _RAIter, _RAIter, _Predicate, random_access_iterator_tag);
681 
682  template<typename _RAIter>
683  void
684  random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
685 
686  template<typename _RAIter, typename _RandomNumberGenerator>
687  void
688  random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&,
690 
691  template<typename _RAIter>
692  void
693  random_shuffle(_RAIter, _RAIter);
694 
695  template<typename _RAIter, typename _RandomNumberGenerator>
696  void
697  random_shuffle(_RAIter, _RAIter,
698 #if __cplusplus >= 201103L
699  _RandomNumberGenerator&&);
700 #else
701  _RandomNumberGenerator&);
702 #endif
703 
704  template<typename _IIter1, typename _IIter2, typename _OIter>
705  _OIter
706  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
708 
709  template<typename _IIter1, typename _IIter2, typename _OIter,
710  typename _Predicate>
711  _OIter
712  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
714 
715  template<typename _IIter1, typename _IIter2, typename _OIter>
716  _OIter
717  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
718 
719  template<typename _IIter1, typename _IIter2, typename _OIter,
720  typename _Predicate>
721  _OIter
722  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
723 
724  template<typename _IIter1, typename _IIter2, typename _Predicate,
725  typename _OIter, typename _IterTag1, typename _IterTag2,
726  typename _IterTag3>
727  _OIter
728  __set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
729  _Predicate, _IterTag1, _IterTag2, _IterTag3);
730 
731  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
732  typename _Predicate>
733  _Output_RAIter
734  __set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter,
735  _Predicate, random_access_iterator_tag,
736  random_access_iterator_tag, random_access_iterator_tag);
737 
738  template<typename _IIter1, typename _IIter2, typename _OIter>
739  _OIter
740  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
742 
743  template<typename _IIter1, typename _IIter2, typename _OIter,
744  typename _Predicate>
745  _OIter
746  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
748 
749  template<typename _IIter1, typename _IIter2, typename _OIter>
750  _OIter
751  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
752 
753  template<typename _IIter1, typename _IIter2, typename _OIter,
754  typename _Predicate>
755  _OIter
756  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
757 
758  template<typename _IIter1, typename _IIter2, typename _Predicate,
759  typename _OIter, typename _IterTag1, typename _IterTag2,
760  typename _IterTag3>
761  _OIter
762  __set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
763  _Predicate, _IterTag1, _IterTag2, _IterTag3);
764 
765  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
766  typename _Predicate>
767  _Output_RAIter
768  __set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
769  _Output_RAIter, _Predicate,
770  random_access_iterator_tag,
771  random_access_iterator_tag,
772  random_access_iterator_tag);
773 
774  template<typename _IIter1, typename _IIter2, typename _OIter>
775  _OIter
776  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
778 
779  template<typename _IIter1, typename _IIter2, typename _OIter,
780  typename _Predicate>
781  _OIter
782  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
783  _Predicate, __gnu_parallel::sequential_tag);
784 
785  template<typename _IIter1, typename _IIter2, typename _OIter>
786  _OIter
787  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
788 
789  template<typename _IIter1, typename _IIter2, typename _OIter,
790  typename _Predicate>
791  _OIter
792  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
793  _Predicate);
794 
795  template<typename _IIter1, typename _IIter2, typename _Predicate,
796  typename _OIter, typename _IterTag1, typename _IterTag2,
797  typename _IterTag3>
798  _OIter
799  __set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2,
800  _OIter, _Predicate, _IterTag1, _IterTag2,
801  _IterTag3);
802 
803  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
804  typename _Predicate>
805  _Output_RAIter
806  __set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
807  _Output_RAIter, _Predicate,
808  random_access_iterator_tag,
809  random_access_iterator_tag,
810  random_access_iterator_tag);
811 
812 
813  template<typename _IIter1, typename _IIter2, typename _OIter>
814  _OIter
815  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
817 
818  template<typename _IIter1, typename _IIter2, typename _OIter,
819  typename _Predicate>
820  _OIter
821  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
823 
824  template<typename _IIter1, typename _IIter2, typename _OIter>
825  _OIter
826  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
827 
828  template<typename _IIter1, typename _IIter2, typename _OIter,
829  typename _Predicate>
830  _OIter
831  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
832 
833  template<typename _IIter1, typename _IIter2, typename _Predicate,
834  typename _OIter, typename _IterTag1, typename _IterTag2,
835  typename _IterTag3>
836  _OIter
837  __set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
838  _Predicate, _IterTag1, _IterTag2, _IterTag3);
839 
840  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
841  typename _Predicate>
842  _Output_RAIter
843  __set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
844  _Output_RAIter, _Predicate,
845  random_access_iterator_tag,
846  random_access_iterator_tag,
847  random_access_iterator_tag);
848 
849 
850  template<typename _RAIter>
851  void
852  sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
853 
854  template<typename _RAIter, typename _Compare>
855  void
856  sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
857 
858  template<typename _RAIter>
859  void
860  sort(_RAIter, _RAIter);
861 
862  template<typename _RAIter, typename _Compare>
863  void
864  sort(_RAIter, _RAIter, _Compare);
865 
866  template<typename _RAIter>
867  void
868  stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
869 
870  template<typename _RAIter, typename _Compare>
871  void
872  stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
873 
874  template<typename _RAIter>
875  void
876  stable_sort(_RAIter, _RAIter);
877 
878  template<typename _RAIter, typename _Compare>
879  void
880  stable_sort(_RAIter, _RAIter, _Compare);
881 
882  template<typename _IIter, typename _OIter>
883  _OIter
884  unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
885 
886  template<typename _IIter, typename _OIter, typename _Predicate>
887  _OIter
888  unique_copy(_IIter, _IIter, _OIter, _Predicate,
890 
891  template<typename _IIter, typename _OIter>
892  _OIter
893  unique_copy(_IIter, _IIter, _OIter);
894 
895  template<typename _IIter, typename _OIter, typename _Predicate>
896  _OIter
897  unique_copy(_IIter, _IIter, _OIter, _Predicate);
898 
899  template<typename _IIter, typename _OIter, typename _Predicate,
900  typename _IterTag1, typename _IterTag2>
901  _OIter
902  __unique_copy_switch(_IIter, _IIter, _OIter, _Predicate,
903  _IterTag1, _IterTag2);
904 
905  template<typename _RAIter, typename _RandomAccess_OIter, typename _Predicate>
906  _RandomAccess_OIter
907  __unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate,
908  random_access_iterator_tag, random_access_iterator_tag);
909 } // end namespace __parallel
910 } // end namespace std
911 
912 #endif /* _GLIBCXX_PARALLEL_ALGORITHMFWD_H */
Runtime settings and tuning parameters, heuristics to decide whether to use parallelized algorithms.
Tags for compile-time selection. This file is a GNU parallel extension to the Standard C++ Library.
ISO C++ entities toplevel namespace is std.
_Parallelism
Run-time equivalents for the compile-time tags.
Definition: types.h:45
@ parallel_balanced
Parallel balanced (work-stealing).
Definition: types.h:53
@ parallel_unbalanced
Parallel unbalanced (equal-sized chunks).
Definition: types.h:50
Forces sequential execution at compile time.
Definition: tags.h:42