libstdc++
parallel/algorithmfwd.h
Go to the documentation of this file.
1 // <parallel/algorithm> Forward declarations -*- C++ -*-
2 
3 // Copyright (C) 2007-2025 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 #ifdef _GLIBCXX_SYSHDR
33 #pragma GCC system_header
34 #endif
35 
36 #include <parallel/tags.h>
37 #include <parallel/settings.h>
38 
39 namespace std _GLIBCXX_VISIBILITY(default)
40 {
41 namespace __parallel
42 {
43  template<typename _FIter>
44  _FIter
45  adjacent_find(_FIter, _FIter);
46 
47  template<typename _FIter>
48  _FIter
49  adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag);
50 
51  template<typename _FIter, typename _IterTag>
52  _FIter
53  __adjacent_find_switch(_FIter, _FIter, _IterTag);
54 
55  template<typename _RAIter>
56  _RAIter
57  __adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag);
58 
59 
60  template<typename _FIter, typename _BiPredicate>
61  _FIter
62  adjacent_find(_FIter, _FIter, _BiPredicate);
63 
64  template<typename _FIter, typename _BiPredicate>
65  _FIter
66  adjacent_find(_FIter, _FIter, _BiPredicate,
68 
69  template<typename _FIter, typename _BiPredicate, typename _IterTag>
70  _FIter
71  __adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag);
72 
73  template<typename _RAIter, typename _BiPredicate>
74  _RAIter
75  __adjacent_find_switch(_RAIter, _RAIter, _BiPredicate,
76  random_access_iterator_tag);
77 
78 
79  template<typename _IIter, typename _Tp>
80  typename iterator_traits<_IIter>::difference_type
81  count(_IIter, _IIter, const _Tp&);
82 
83  template<typename _IIter, typename _Tp>
84  typename iterator_traits<_IIter>::difference_type
85  count(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
86 
87  template<typename _IIter, typename _Tp>
88  typename iterator_traits<_IIter>::difference_type
89  count(_IIter, _IIter, const _Tp&, __gnu_parallel::_Parallelism);
90 
91  template<typename _IIter, typename _Tp, typename _IterTag>
92  typename iterator_traits<_IIter>::difference_type
93  __count_switch(_IIter, _IIter, const _Tp&, _IterTag);
94 
95  template<typename _RAIter, typename _Tp>
96  typename iterator_traits<_RAIter>::difference_type
97  __count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag,
98  __gnu_parallel::_Parallelism __parallelism
100 
101 
102  template<typename _IIter, typename _Predicate>
103  typename iterator_traits<_IIter>::difference_type
104  count_if(_IIter, _IIter, _Predicate);
105 
106  template<typename _IIter, typename _Predicate>
107  typename iterator_traits<_IIter>::difference_type
108  count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
109 
110  template<typename _IIter, typename _Predicate>
111  typename iterator_traits<_IIter>::difference_type
112  count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism);
113 
114  template<typename _IIter, typename _Predicate, typename _IterTag>
115  typename iterator_traits<_IIter>::difference_type
116  __count_if_switch(_IIter, _IIter, _Predicate, _IterTag);
117 
118  template<typename _RAIter, typename _Predicate>
119  typename iterator_traits<_RAIter>::difference_type
120  __count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
121  __gnu_parallel::_Parallelism __parallelism
123 
124  // algobase.h
125  template<typename _IIter1, typename _IIter2>
126  bool
127  equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
128 
129  template<typename _IIter1, typename _IIter2, typename _Predicate>
130  bool
131  equal(_IIter1, _IIter1, _IIter2, _Predicate,
133 
134  template<typename _IIter1, typename _IIter2>
135  _GLIBCXX20_CONSTEXPR
136  bool
137  equal(_IIter1, _IIter1, _IIter2);
138 
139  template<typename _IIter1, typename _IIter2, typename _Predicate>
140  _GLIBCXX20_CONSTEXPR
141  bool
142  equal(_IIter1, _IIter1, _IIter2, _Predicate);
143 
144  template<typename _IIter, typename _Tp>
145  _IIter
146  find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag);
147 
148  template<typename _IIter, typename _Tp>
149  _IIter
150  find(_IIter, _IIter, const _Tp& __val);
151 
152  template<typename _IIter, typename _Tp, typename _IterTag>
153  _IIter
154  __find_switch(_IIter, _IIter, const _Tp&, _IterTag);
155 
156  template<typename _RAIter, typename _Tp>
157  _RAIter
158  __find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag);
159 
160  template<typename _IIter, typename _Predicate>
161  _IIter
162  find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
163 
164  template<typename _IIter, typename _Predicate>
165  _IIter
166  find_if(_IIter, _IIter, _Predicate);
167 
168  template<typename _IIter, typename _Predicate, typename _IterTag>
169  _IIter
170  __find_if_switch(_IIter, _IIter, _Predicate, _IterTag);
171 
172  template<typename _RAIter, typename _Predicate>
173  _RAIter
174  __find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag);
175 
176  template<typename _IIter, typename _FIter>
177  _IIter
178  find_first_of(_IIter, _IIter, _FIter, _FIter,
180 
181  template<typename _IIter, typename _FIter, typename _BiPredicate>
182  _IIter
183  find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
185 
186  template<typename _IIter, typename _FIter, typename _BiPredicate>
187  _IIter
188  find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate);
189 
190  template<typename _IIter, typename _FIter>
191  _IIter
192  find_first_of(_IIter, _IIter, _FIter, _FIter);
193 
194  template<typename _IIter, typename _FIter,
195  typename _IterTag1, typename _IterTag2>
196  _IIter
197  __find_first_of_switch(
198  _IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2);
199 
200  template<typename _RAIter, typename _FIter, typename _BiPredicate,
201  typename _IterTag>
202  _RAIter
203  __find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate,
204  random_access_iterator_tag, _IterTag);
205 
206  template<typename _IIter, typename _FIter, typename _BiPredicate,
207  typename _IterTag1, typename _IterTag2>
208  _IIter
209  __find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
210  _IterTag1, _IterTag2);
211 
212 
213  template<typename _IIter, typename _Function>
214  _Function
215  for_each(_IIter, _IIter, _Function);
216 
217  template<typename _IIter, typename _Function>
218  _Function
219  for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag);
220 
221  template<typename _Iterator, typename _Function>
222  _Function
223  for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism);
224 
225  template<typename _IIter, typename _Function, typename _IterTag>
226  _Function
227  __for_each_switch(_IIter, _IIter, _Function, _IterTag);
228 
229  template<typename _RAIter, typename _Function>
230  _Function
231  __for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag,
232  __gnu_parallel::_Parallelism __parallelism
234 
235 
236  template<typename _FIter, typename _Generator>
237  void
238  generate(_FIter, _FIter, _Generator);
239 
240  template<typename _FIter, typename _Generator>
241  void
242  generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag);
243 
244  template<typename _FIter, typename _Generator>
245  void
246  generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism);
247 
248  template<typename _FIter, typename _Generator, typename _IterTag>
249  void
250  __generate_switch(_FIter, _FIter, _Generator, _IterTag);
251 
252  template<typename _RAIter, typename _Generator>
253  void
254  __generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag,
255  __gnu_parallel::_Parallelism __parallelism
257 
258  template<typename _OIter, typename _Size, typename _Generator>
259  _OIter
260  generate_n(_OIter, _Size, _Generator);
261 
262  template<typename _OIter, typename _Size, typename _Generator>
263  _OIter
264  generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag);
265 
266  template<typename _OIter, typename _Size, typename _Generator>
267  _OIter
268  generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism);
269 
270  template<typename _OIter, typename _Size, typename _Generator,
271  typename _IterTag>
272  _OIter
273  __generate_n_switch(_OIter, _Size, _Generator, _IterTag);
274 
275  template<typename _RAIter, typename _Size, typename _Generator>
276  _RAIter
277  __generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag,
278  __gnu_parallel::_Parallelism __parallelism
280 
281  template<typename _IIter1, typename _IIter2>
282  bool
283  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2,
285 
286  template<typename _IIter1, typename _IIter2, typename _Predicate>
287  bool
288  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate,
290 
291  template<typename _IIter1, typename _IIter2>
292  _GLIBCXX20_CONSTEXPR
293  bool
294  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
295 
296  template<typename _IIter1, typename _IIter2, typename _Predicate>
297  _GLIBCXX20_CONSTEXPR
298  bool
299  lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate);
300 
301  template<typename _IIter1, typename _IIter2,
302  typename _Predicate, typename _IterTag1, typename _IterTag2>
303  bool
304  __lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2,
305  _Predicate, _IterTag1, _IterTag2);
306 
307  template<typename _RAIter1, typename _RAIter2, typename _Predicate>
308  bool
309  __lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
310  _Predicate, random_access_iterator_tag,
311  random_access_iterator_tag);
312 
313  // algo.h
314  template<typename _IIter1, typename _IIter2>
315  pair<_IIter1, _IIter2>
316  mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
317 
318  template<typename _IIter1, typename _IIter2, typename _Predicate>
319  pair<_IIter1, _IIter2>
320  mismatch(_IIter1, _IIter1, _IIter2, _Predicate,
322 
323  template<typename _IIter1, typename _IIter2>
324  pair<_IIter1, _IIter2>
325  mismatch(_IIter1, _IIter1, _IIter2);
326 
327  template<typename _IIter1, typename _IIter2, typename _Predicate>
328  pair<_IIter1, _IIter2>
329  mismatch(_IIter1, _IIter1, _IIter2, _Predicate);
330 
331  template<typename _IIter1, typename _IIter2, typename _Predicate,
332  typename _IterTag1, typename _IterTag2>
333  pair<_IIter1, _IIter2>
334  __mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate,
335  _IterTag1, _IterTag2);
336 
337  template<typename _RAIter1, typename _RAIter2, typename _Predicate>
338  pair<_RAIter1, _RAIter2>
339  __mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate,
340  random_access_iterator_tag, random_access_iterator_tag);
341 
342  template<typename _FIter1, typename _FIter2>
343  _FIter1
344  search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag);
345 
346  template<typename _FIter1, typename _FIter2>
347  _FIter1
348  search(_FIter1, _FIter1, _FIter2, _FIter2);
349 
350  template<typename _FIter1, typename _FIter2, typename _BiPredicate>
351  _FIter1
352  search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
354 
355  template<typename _FIter1, typename _FIter2, typename _BiPredicate>
356  _GLIBCXX20_CONSTEXPR
357  _FIter1
358  search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate);
359 
360  template<typename _RAIter1, typename _RAIter2>
361  _RAIter1
362  __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
363  random_access_iterator_tag, random_access_iterator_tag);
364 
365  template<typename _FIter1, typename _FIter2, typename _IterTag1,
366  typename _IterTag2>
367  _FIter1
368  __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2);
369 
370  template<typename _RAIter1, typename _RAIter2, typename _BiPredicate>
371  _RAIter1
372  __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate,
373  random_access_iterator_tag, random_access_iterator_tag);
374 
375  template<typename _FIter1, typename _FIter2, typename _BiPredicate,
376  typename _IterTag1, typename _IterTag2>
377  _FIter1
378  __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
379  _IterTag1, _IterTag2);
380 
381  template<typename _FIter, typename _Integer, typename _Tp>
382  _FIter
383  search_n(_FIter, _FIter, _Integer, const _Tp&,
385 
386  template<typename _FIter, typename _Integer, typename _Tp,
387  typename _BiPredicate>
388  _FIter
389  search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate,
391 
392  template<typename _FIter, typename _Integer, typename _Tp>
393  _FIter
394  search_n(_FIter, _FIter, _Integer, const _Tp&);
395 
396  template<typename _FIter, typename _Integer, typename _Tp,
397  typename _BiPredicate>
398  _FIter
399  search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate);
400 
401  template<typename _RAIter, typename _Integer, typename _Tp,
402  typename _BiPredicate>
403  _RAIter
404  __search_n_switch(_RAIter, _RAIter, _Integer, const _Tp&,
405  _BiPredicate, random_access_iterator_tag);
406 
407  template<typename _FIter, typename _Integer, typename _Tp,
408  typename _BiPredicate, typename _IterTag>
409  _FIter
410  __search_n_switch(_FIter, _FIter, _Integer, const _Tp&,
411  _BiPredicate, _IterTag);
412 
413 
414  template<typename _IIter, typename _OIter, typename _UnaryOperation>
415  _OIter
416  transform(_IIter, _IIter, _OIter, _UnaryOperation);
417 
418  template<typename _IIter, typename _OIter, typename _UnaryOperation>
419  _OIter
420  transform(_IIter, _IIter, _OIter, _UnaryOperation,
422 
423  template<typename _IIter, typename _OIter, typename _UnaryOperation>
424  _OIter
425  transform(_IIter, _IIter, _OIter, _UnaryOperation,
427 
428  template<typename _IIter, typename _OIter, typename _UnaryOperation,
429  typename _IterTag1, typename _IterTag2>
430  _OIter
431  __transform1_switch(_IIter, _IIter, _OIter, _UnaryOperation,
432  _IterTag1, _IterTag2);
433 
434 
435  template<typename _RAIIter, typename _RAOIter, typename _UnaryOperation>
436  _RAOIter
437  __transform1_switch(_RAIIter, _RAIIter, _RAOIter, _UnaryOperation,
438  random_access_iterator_tag, random_access_iterator_tag,
439  __gnu_parallel::_Parallelism __parallelism
441 
442 
443  template<typename _IIter1, typename _IIter2, typename _OIter,
444  typename _BiOperation>
445  _OIter
446  transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation);
447 
448  template<typename _IIter1, typename _IIter2, typename _OIter,
449  typename _BiOperation>
450  _OIter
451  transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
453 
454  template<typename _IIter1, typename _IIter2, typename _OIter,
455  typename _BiOperation>
456  _OIter
457  transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
459 
460  template<typename _RAIter1, typename _RAIter2, typename _RAIter3,
461  typename _BiOperation>
462  _RAIter3
463  __transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation,
464  random_access_iterator_tag, random_access_iterator_tag,
465  random_access_iterator_tag,
466  __gnu_parallel::_Parallelism __parallelism
468 
469  template<typename _IIter1, typename _IIter2, typename _OIter,
470  typename _BiOperation, typename _Tag1,
471  typename _Tag2, typename _Tag3>
472  _OIter
473  __transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
474  _Tag1, _Tag2, _Tag3);
475 
476 
477  template<typename _FIter, typename _Tp>
478  void
479  replace(_FIter, _FIter, const _Tp&, const _Tp&);
480 
481  template<typename _FIter, typename _Tp>
482  void
483  replace(_FIter, _FIter, const _Tp&, const _Tp&,
485 
486  template<typename _FIter, typename _Tp>
487  void
488  replace(_FIter, _FIter, const _Tp&, const _Tp&,
490 
491  template<typename _FIter, typename _Tp, typename _IterTag>
492  void
493  __replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag);
494 
495  template<typename _RAIter, typename _Tp>
496  void
497  __replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&,
498  random_access_iterator_tag, __gnu_parallel::_Parallelism);
499 
500 
501  template<typename _FIter, typename _Predicate, typename _Tp>
502  void
503  replace_if(_FIter, _FIter, _Predicate, const _Tp&);
504 
505  template<typename _FIter, typename _Predicate, typename _Tp>
506  void
507  replace_if(_FIter, _FIter, _Predicate, const _Tp&,
509 
510  template<typename _FIter, typename _Predicate, typename _Tp>
511  void
512  replace_if(_FIter, _FIter, _Predicate, const _Tp&,
514 
515  template<typename _FIter, typename _Predicate, typename _Tp,
516  typename _IterTag>
517  void
518  __replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag);
519 
520  template<typename _RAIter, typename _Predicate, typename _Tp>
521  void
522  __replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&,
523  random_access_iterator_tag,
525 
526 
527  template<typename _FIter>
528  _FIter
529  max_element(_FIter, _FIter);
530 
531  template<typename _FIter>
532  _FIter
533  max_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
534 
535  template<typename _FIter>
536  _FIter
537  max_element(_FIter, _FIter, __gnu_parallel::_Parallelism);
538 
539  template<typename _FIter, typename _Compare>
540  _FIter
541  max_element(_FIter, _FIter, _Compare);
542 
543  template<typename _FIter, typename _Compare>
544  _FIter
545  max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
546 
547  template<typename _FIter, typename _Compare>
548  _FIter
549  max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
550 
551  template<typename _FIter, typename _Compare, typename _IterTag>
552  _FIter
553  __max_element_switch(_FIter, _FIter, _Compare, _IterTag);
554 
555  template<typename _RAIter, typename _Compare>
556  _RAIter
557  __max_element_switch(
558  _RAIter, _RAIter, _Compare, random_access_iterator_tag,
559  __gnu_parallel::_Parallelism __parallelism
561 
562 
563  template<typename _IIter1, typename _IIter2, typename _OIter>
564  _OIter
565  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
567 
568  template<typename _IIter1, typename _IIter2, typename _OIter,
569  typename _Compare>
570  _OIter
571  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
573 
574  template<typename _IIter1, typename _IIter2, typename _OIter,
575  typename _Compare>
576  _OIter
577  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
578 
579  template<typename _IIter1, typename _IIter2, typename _OIter>
580  _OIter
581  merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
582 
583  template<typename _IIter1, typename _IIter2, typename _OIter,
584  typename _Compare, typename _IterTag1, typename _IterTag2,
585  typename _IterTag3>
586  _OIter
587  __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
588  _IterTag1, _IterTag2, _IterTag3);
589 
590  template<typename _IIter1, typename _IIter2, typename _OIter,
591  typename _Compare>
592  _OIter
593  __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
594  random_access_iterator_tag, random_access_iterator_tag,
595  random_access_iterator_tag);
596 
597 
598  template<typename _FIter>
599  _FIter
600  min_element(_FIter, _FIter);
601 
602  template<typename _FIter>
603  _FIter
604  min_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
605 
606  template<typename _FIter>
607  _FIter
608  min_element(_FIter, _FIter,
609  __gnu_parallel::_Parallelism __parallelism_tag);
610 
611  template<typename _FIter, typename _Compare>
612  _FIter
613  min_element(_FIter, _FIter, _Compare);
614 
615  template<typename _FIter, typename _Compare>
616  _FIter
617  min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
618 
619  template<typename _FIter, typename _Compare>
620  _FIter
621  min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism);
622 
623  template<typename _FIter, typename _Compare, typename _IterTag>
624  _FIter
625  __min_element_switch(_FIter, _FIter, _Compare, _IterTag);
626 
627  template<typename _RAIter, typename _Compare>
628  _RAIter
629  __min_element_switch(
630  _RAIter, _RAIter, _Compare, random_access_iterator_tag,
631  __gnu_parallel::_Parallelism __parallelism
633 
634  template<typename _RAIter>
635  void
636  nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
637 
638  template<typename _RAIter, typename _Compare>
639  void
640  nth_element(_RAIter, _RAIter, _RAIter, _Compare,
642 
643  template<typename _RAIter, typename _Compare>
644  void
645  nth_element(_RAIter, _RAIter, _RAIter, _Compare);
646 
647  template<typename _RAIter>
648  void
649  nth_element(_RAIter, _RAIter, _RAIter);
650 
651  template<typename _RAIter, typename _Compare>
652  void
653  partial_sort(_RAIter, _RAIter, _RAIter, _Compare,
655 
656  template<typename _RAIter>
657  void
658  partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
659 
660  template<typename _RAIter, typename _Compare>
661  void
662  partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
663 
664  template<typename _RAIter>
665  void
666  partial_sort(_RAIter, _RAIter, _RAIter);
667 
668  template<typename _FIter, typename _Predicate>
669  _FIter
670  partition(_FIter, _FIter, _Predicate, __gnu_parallel::sequential_tag);
671 
672  template<typename _FIter, typename _Predicate>
673  _FIter
674  partition(_FIter, _FIter, _Predicate);
675 
676  template<typename _FIter, typename _Predicate, typename _IterTag>
677  _FIter
678  __partition_switch(_FIter, _FIter, _Predicate, _IterTag);
679 
680  template<typename _RAIter, typename _Predicate>
681  _RAIter
682  __partition_switch(
683  _RAIter, _RAIter, _Predicate, random_access_iterator_tag);
684 
685  template<typename _RAIter>
686  void
687  random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
688 
689  template<typename _RAIter, typename _RandomNumberGenerator>
690  void
691  random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&,
693 
694  template<typename _RAIter>
695  void
696  random_shuffle(_RAIter, _RAIter);
697 
698  template<typename _RAIter, typename _RandomNumberGenerator>
699  void
700  random_shuffle(_RAIter, _RAIter,
701 #if __cplusplus >= 201103L
702  _RandomNumberGenerator&&);
703 #else
704  _RandomNumberGenerator&);
705 #endif
706 
707  template<typename _IIter1, typename _IIter2, typename _OIter>
708  _OIter
709  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
711 
712  template<typename _IIter1, typename _IIter2, typename _OIter,
713  typename _Predicate>
714  _OIter
715  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
717 
718  template<typename _IIter1, typename _IIter2, typename _OIter>
719  _OIter
720  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
721 
722  template<typename _IIter1, typename _IIter2, typename _OIter,
723  typename _Predicate>
724  _OIter
725  set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
726 
727  template<typename _IIter1, typename _IIter2, typename _Predicate,
728  typename _OIter, typename _IterTag1, typename _IterTag2,
729  typename _IterTag3>
730  _OIter
731  __set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
732  _Predicate, _IterTag1, _IterTag2, _IterTag3);
733 
734  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
735  typename _Predicate>
736  _Output_RAIter
737  __set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter,
738  _Predicate, random_access_iterator_tag,
739  random_access_iterator_tag, random_access_iterator_tag);
740 
741  template<typename _IIter1, typename _IIter2, typename _OIter>
742  _OIter
743  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
745 
746  template<typename _IIter1, typename _IIter2, typename _OIter,
747  typename _Predicate>
748  _OIter
749  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
751 
752  template<typename _IIter1, typename _IIter2, typename _OIter>
753  _OIter
754  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
755 
756  template<typename _IIter1, typename _IIter2, typename _OIter,
757  typename _Predicate>
758  _OIter
759  set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
760 
761  template<typename _IIter1, typename _IIter2, typename _Predicate,
762  typename _OIter, typename _IterTag1, typename _IterTag2,
763  typename _IterTag3>
764  _OIter
765  __set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
766  _Predicate, _IterTag1, _IterTag2, _IterTag3);
767 
768  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
769  typename _Predicate>
770  _Output_RAIter
771  __set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
772  _Output_RAIter, _Predicate,
773  random_access_iterator_tag,
774  random_access_iterator_tag,
775  random_access_iterator_tag);
776 
777  template<typename _IIter1, typename _IIter2, typename _OIter>
778  _OIter
779  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
781 
782  template<typename _IIter1, typename _IIter2, typename _OIter,
783  typename _Predicate>
784  _OIter
785  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
786  _Predicate, __gnu_parallel::sequential_tag);
787 
788  template<typename _IIter1, typename _IIter2, typename _OIter>
789  _OIter
790  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
791 
792  template<typename _IIter1, typename _IIter2, typename _OIter,
793  typename _Predicate>
794  _OIter
795  set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
796  _Predicate);
797 
798  template<typename _IIter1, typename _IIter2, typename _Predicate,
799  typename _OIter, typename _IterTag1, typename _IterTag2,
800  typename _IterTag3>
801  _OIter
802  __set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2,
803  _OIter, _Predicate, _IterTag1, _IterTag2,
804  _IterTag3);
805 
806  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
807  typename _Predicate>
808  _Output_RAIter
809  __set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
810  _Output_RAIter, _Predicate,
811  random_access_iterator_tag,
812  random_access_iterator_tag,
813  random_access_iterator_tag);
814 
815 
816  template<typename _IIter1, typename _IIter2, typename _OIter>
817  _OIter
818  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
820 
821  template<typename _IIter1, typename _IIter2, typename _OIter,
822  typename _Predicate>
823  _OIter
824  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
826 
827  template<typename _IIter1, typename _IIter2, typename _OIter>
828  _OIter
829  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
830 
831  template<typename _IIter1, typename _IIter2, typename _OIter,
832  typename _Predicate>
833  _OIter
834  set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
835 
836  template<typename _IIter1, typename _IIter2, typename _Predicate,
837  typename _OIter, typename _IterTag1, typename _IterTag2,
838  typename _IterTag3>
839  _OIter
840  __set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
841  _Predicate, _IterTag1, _IterTag2, _IterTag3);
842 
843  template<typename _RAIter1, typename _RAIter2, typename _Output_RAIter,
844  typename _Predicate>
845  _Output_RAIter
846  __set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
847  _Output_RAIter, _Predicate,
848  random_access_iterator_tag,
849  random_access_iterator_tag,
850  random_access_iterator_tag);
851 
852 
853  template<typename _RAIter>
854  void
855  sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
856 
857  template<typename _RAIter, typename _Compare>
858  void
859  sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
860 
861  template<typename _RAIter>
862  void
863  sort(_RAIter, _RAIter);
864 
865  template<typename _RAIter, typename _Compare>
866  void
867  sort(_RAIter, _RAIter, _Compare);
868 
869  template<typename _RAIter>
870  void
871  stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
872 
873  template<typename _RAIter, typename _Compare>
874  void
875  stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
876 
877  template<typename _RAIter>
878  void
879  stable_sort(_RAIter, _RAIter);
880 
881  template<typename _RAIter, typename _Compare>
882  void
883  stable_sort(_RAIter, _RAIter, _Compare);
884 
885  template<typename _IIter, typename _OIter>
886  _OIter
887  unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
888 
889  template<typename _IIter, typename _OIter, typename _Predicate>
890  _OIter
891  unique_copy(_IIter, _IIter, _OIter, _Predicate,
893 
894  template<typename _IIter, typename _OIter>
895  _OIter
896  unique_copy(_IIter, _IIter, _OIter);
897 
898  template<typename _IIter, typename _OIter, typename _Predicate>
899  _OIter
900  unique_copy(_IIter, _IIter, _OIter, _Predicate);
901 
902  template<typename _IIter, typename _OIter, typename _Predicate,
903  typename _IterTag1, typename _IterTag2>
904  _OIter
905  __unique_copy_switch(_IIter, _IIter, _OIter, _Predicate,
906  _IterTag1, _IterTag2);
907 
908  template<typename _RAIter, typename _RandomAccess_OIter, typename _Predicate>
909  _RandomAccess_OIter
910  __unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate,
911  random_access_iterator_tag, random_access_iterator_tag);
912 } // end namespace __parallel
913 } // end namespace std
914 
915 #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