29#ifndef _GLIBCXX_PARALLEL_ALGORITHMFWD_H
30#define _GLIBCXX_PARALLEL_ALGORITHMFWD_H 1
33#pragma GCC system_header
39namespace std _GLIBCXX_VISIBILITY(default)
43 template<
typename _FIter>
45 adjacent_find(_FIter, _FIter);
47 template<
typename _FIter>
49 adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag);
51 template<
typename _FIter,
typename _IterTag>
53 __adjacent_find_switch(_FIter, _FIter, _IterTag);
55 template<
typename _RAIter>
57 __adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag);
60 template<
typename _FIter,
typename _BiPredicate>
62 adjacent_find(_FIter, _FIter, _BiPredicate);
64 template<
typename _FIter,
typename _BiPredicate>
66 adjacent_find(_FIter, _FIter, _BiPredicate,
67 __gnu_parallel::sequential_tag);
69 template<
typename _FIter,
typename _BiPredicate,
typename _IterTag>
71 __adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag);
73 template<
typename _RAIter,
typename _BiPredicate>
75 __adjacent_find_switch(_RAIter, _RAIter, _BiPredicate,
76 random_access_iterator_tag);
79 template<
typename _IIter,
typename _Tp>
80 typename iterator_traits<_IIter>::difference_type
81 count(_IIter, _IIter,
const _Tp&);
83 template<
typename _IIter,
typename _Tp>
84 typename iterator_traits<_IIter>::difference_type
85 count(_IIter, _IIter,
const _Tp&, __gnu_parallel::sequential_tag);
87 template<
typename _IIter,
typename _Tp>
88 typename iterator_traits<_IIter>::difference_type
91 template<
typename _IIter,
typename _Tp,
typename _IterTag>
92 typename iterator_traits<_IIter>::difference_type
93 __count_switch(_IIter, _IIter,
const _Tp&, _IterTag);
95 template<
typename _RAIter,
typename _Tp>
96 typename iterator_traits<_RAIter>::difference_type
97 __count_switch(_RAIter, _RAIter,
const _Tp&, random_access_iterator_tag,
102 template<
typename _IIter,
typename _Predicate>
103 typename iterator_traits<_IIter>::difference_type
104 count_if(_IIter, _IIter, _Predicate);
106 template<
typename _IIter,
typename _Predicate>
107 typename iterator_traits<_IIter>::difference_type
108 count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
110 template<
typename _IIter,
typename _Predicate>
111 typename iterator_traits<_IIter>::difference_type
114 template<
typename _IIter,
typename _Predicate,
typename _IterTag>
115 typename iterator_traits<_IIter>::difference_type
116 __count_if_switch(_IIter, _IIter, _Predicate, _IterTag);
118 template<
typename _RAIter,
typename _Predicate>
119 typename iterator_traits<_RAIter>::difference_type
120 __count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag,
125 template<
typename _IIter1,
typename _IIter2>
127 equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
129 template<
typename _IIter1,
typename _IIter2,
typename _Predicate>
131 equal(_IIter1, _IIter1, _IIter2, _Predicate,
132 __gnu_parallel::sequential_tag);
134 template<
typename _IIter1,
typename _IIter2>
137 equal(_IIter1, _IIter1, _IIter2);
139 template<
typename _IIter1,
typename _IIter2,
typename _Predicate>
142 equal(_IIter1, _IIter1, _IIter2, _Predicate);
144 template<
typename _IIter,
typename _Tp>
146 find(_IIter, _IIter,
const _Tp&, __gnu_parallel::sequential_tag);
148 template<
typename _IIter,
typename _Tp>
150 find(_IIter, _IIter,
const _Tp& __val);
152 template<
typename _IIter,
typename _Tp,
typename _IterTag>
154 __find_switch(_IIter, _IIter,
const _Tp&, _IterTag);
156 template<
typename _RAIter,
typename _Tp>
158 __find_switch(_RAIter, _RAIter,
const _Tp&, random_access_iterator_tag);
160 template<
typename _IIter,
typename _Predicate>
162 find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag);
164 template<
typename _IIter,
typename _Predicate>
166 find_if(_IIter, _IIter, _Predicate);
168 template<
typename _IIter,
typename _Predicate,
typename _IterTag>
170 __find_if_switch(_IIter, _IIter, _Predicate, _IterTag);
172 template<
typename _RAIter,
typename _Predicate>
174 __find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag);
176 template<
typename _IIter,
typename _FIter>
178 find_first_of(_IIter, _IIter, _FIter, _FIter,
179 __gnu_parallel::sequential_tag);
181 template<
typename _IIter,
typename _FIter,
typename _BiPredicate>
183 find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
184 __gnu_parallel::sequential_tag);
186 template<
typename _IIter,
typename _FIter,
typename _BiPredicate>
188 find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate);
190 template<
typename _IIter,
typename _FIter>
192 find_first_of(_IIter, _IIter, _FIter, _FIter);
194 template<
typename _IIter,
typename _FIter,
195 typename _IterTag1,
typename _IterTag2>
197 __find_first_of_switch(
198 _IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2);
200 template<
typename _RAIter,
typename _FIter,
typename _BiPredicate,
203 __find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate,
204 random_access_iterator_tag, _IterTag);
206 template<
typename _IIter,
typename _FIter,
typename _BiPredicate,
207 typename _IterTag1,
typename _IterTag2>
209 __find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate,
210 _IterTag1, _IterTag2);
213 template<
typename _IIter,
typename _Function>
215 for_each(_IIter, _IIter, _Function);
217 template<
typename _IIter,
typename _Function>
219 for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag);
221 template<
typename _Iterator,
typename _Function>
225 template<
typename _IIter,
typename _Function,
typename _IterTag>
227 __for_each_switch(_IIter, _IIter, _Function, _IterTag);
229 template<
typename _RAIter,
typename _Function>
231 __for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag,
236 template<
typename _FIter,
typename _Generator>
238 generate(_FIter, _FIter, _Generator);
240 template<
typename _FIter,
typename _Generator>
242 generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag);
244 template<
typename _FIter,
typename _Generator>
248 template<
typename _FIter,
typename _Generator,
typename _IterTag>
250 __generate_switch(_FIter, _FIter, _Generator, _IterTag);
252 template<
typename _RAIter,
typename _Generator>
254 __generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag,
258 template<
typename _OIter,
typename _Size,
typename _Generator>
260 generate_n(_OIter, _Size, _Generator);
262 template<
typename _OIter,
typename _Size,
typename _Generator>
264 generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag);
266 template<
typename _OIter,
typename _Size,
typename _Generator>
270 template<
typename _OIter,
typename _Size,
typename _Generator,
273 __generate_n_switch(_OIter, _Size, _Generator, _IterTag);
275 template<
typename _RAIter,
typename _Size,
typename _Generator>
277 __generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag,
281 template<
typename _IIter1,
typename _IIter2>
283 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2,
284 __gnu_parallel::sequential_tag);
286 template<
typename _IIter1,
typename _IIter2,
typename _Predicate>
288 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate,
289 __gnu_parallel::sequential_tag);
291 template<
typename _IIter1,
typename _IIter2>
294 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2);
296 template<
typename _IIter1,
typename _IIter2,
typename _Predicate>
299 lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate);
301 template<
typename _IIter1,
typename _IIter2,
302 typename _Predicate,
typename _IterTag1,
typename _IterTag2>
304 __lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2,
305 _Predicate, _IterTag1, _IterTag2);
307 template<
typename _RAIter1,
typename _RAIter2,
typename _Predicate>
309 __lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
310 _Predicate, random_access_iterator_tag,
311 random_access_iterator_tag);
314 template<
typename _IIter1,
typename _IIter2>
316 mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag);
318 template<
typename _IIter1,
typename _IIter2,
typename _Predicate>
320 mismatch(_IIter1, _IIter1, _IIter2, _Predicate,
321 __gnu_parallel::sequential_tag);
323 template<
typename _IIter1,
typename _IIter2>
325 mismatch(_IIter1, _IIter1, _IIter2);
327 template<
typename _IIter1,
typename _IIter2,
typename _Predicate>
329 mismatch(_IIter1, _IIter1, _IIter2, _Predicate);
331 template<
typename _IIter1,
typename _IIter2,
typename _Predicate,
332 typename _IterTag1,
typename _IterTag2>
334 __mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate,
335 _IterTag1, _IterTag2);
337 template<
typename _RAIter1,
typename _RAIter2,
typename _Predicate>
339 __mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate,
340 random_access_iterator_tag, random_access_iterator_tag);
342 template<
typename _FIter1,
typename _FIter2>
344 search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag);
346 template<
typename _FIter1,
typename _FIter2>
348 search(_FIter1, _FIter1, _FIter2, _FIter2);
350 template<
typename _FIter1,
typename _FIter2,
typename _BiPredicate>
352 search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
353 __gnu_parallel::sequential_tag);
355 template<
typename _FIter1,
typename _FIter2,
typename _BiPredicate>
358 search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate);
360 template<
typename _RAIter1,
typename _RAIter2>
362 __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2,
363 random_access_iterator_tag, random_access_iterator_tag);
365 template<
typename _FIter1,
typename _FIter2,
typename _IterTag1,
368 __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2);
370 template<
typename _RAIter1,
typename _RAIter2,
typename _BiPredicate>
372 __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate,
373 random_access_iterator_tag, random_access_iterator_tag);
375 template<
typename _FIter1,
typename _FIter2,
typename _BiPredicate,
376 typename _IterTag1,
typename _IterTag2>
378 __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate,
379 _IterTag1, _IterTag2);
381 template<
typename _FIter,
typename _Integer,
typename _Tp>
383 search_n(_FIter, _FIter, _Integer,
const _Tp&,
384 __gnu_parallel::sequential_tag);
386 template<
typename _FIter,
typename _Integer,
typename _Tp,
387 typename _BiPredicate>
389 search_n(_FIter, _FIter, _Integer,
const _Tp&, _BiPredicate,
390 __gnu_parallel::sequential_tag);
392 template<
typename _FIter,
typename _Integer,
typename _Tp>
394 search_n(_FIter, _FIter, _Integer,
const _Tp&);
396 template<
typename _FIter,
typename _Integer,
typename _Tp,
397 typename _BiPredicate>
399 search_n(_FIter, _FIter, _Integer,
const _Tp&, _BiPredicate);
401 template<
typename _RAIter,
typename _Integer,
typename _Tp,
402 typename _BiPredicate>
404 __search_n_switch(_RAIter, _RAIter, _Integer,
const _Tp&,
405 _BiPredicate, random_access_iterator_tag);
407 template<
typename _FIter,
typename _Integer,
typename _Tp,
408 typename _BiPredicate,
typename _IterTag>
410 __search_n_switch(_FIter, _FIter, _Integer,
const _Tp&,
411 _BiPredicate, _IterTag);
414 template<
typename _IIter,
typename _OIter,
typename _UnaryOperation>
416 transform(_IIter, _IIter, _OIter, _UnaryOperation);
418 template<
typename _IIter,
typename _OIter,
typename _UnaryOperation>
420 transform(_IIter, _IIter, _OIter, _UnaryOperation,
421 __gnu_parallel::sequential_tag);
423 template<
typename _IIter,
typename _OIter,
typename _UnaryOperation>
425 transform(_IIter, _IIter, _OIter, _UnaryOperation,
428 template<
typename _IIter,
typename _OIter,
typename _UnaryOperation,
429 typename _IterTag1,
typename _IterTag2>
431 __transform1_switch(_IIter, _IIter, _OIter, _UnaryOperation,
432 _IterTag1, _IterTag2);
435 template<
typename _RAIIter,
typename _RAOIter,
typename _UnaryOperation>
437 __transform1_switch(_RAIIter, _RAIIter, _RAOIter, _UnaryOperation,
438 random_access_iterator_tag, random_access_iterator_tag,
443 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
444 typename _BiOperation>
446 transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation);
448 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
449 typename _BiOperation>
451 transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
452 __gnu_parallel::sequential_tag);
454 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
455 typename _BiOperation>
457 transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
460 template<
typename _RAIter1,
typename _RAIter2,
typename _RAIter3,
461 typename _BiOperation>
463 __transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation,
464 random_access_iterator_tag, random_access_iterator_tag,
465 random_access_iterator_tag,
469 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
470 typename _BiOperation,
typename _Tag1,
471 typename _Tag2,
typename _Tag3>
473 __transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation,
474 _Tag1, _Tag2, _Tag3);
477 template<
typename _FIter,
typename _Tp>
479 replace(_FIter, _FIter,
const _Tp&,
const _Tp&);
481 template<
typename _FIter,
typename _Tp>
483 replace(_FIter, _FIter,
const _Tp&,
const _Tp&,
484 __gnu_parallel::sequential_tag);
486 template<
typename _FIter,
typename _Tp>
488 replace(_FIter, _FIter,
const _Tp&,
const _Tp&,
491 template<
typename _FIter,
typename _Tp,
typename _IterTag>
493 __replace_switch(_FIter, _FIter,
const _Tp&,
const _Tp&, _IterTag);
495 template<
typename _RAIter,
typename _Tp>
497 __replace_switch(_RAIter, _RAIter,
const _Tp&,
const _Tp&,
501 template<
typename _FIter,
typename _Predicate,
typename _Tp>
503 replace_if(_FIter, _FIter, _Predicate,
const _Tp&);
505 template<
typename _FIter,
typename _Predicate,
typename _Tp>
507 replace_if(_FIter, _FIter, _Predicate,
const _Tp&,
508 __gnu_parallel::sequential_tag);
510 template<
typename _FIter,
typename _Predicate,
typename _Tp>
512 replace_if(_FIter, _FIter, _Predicate,
const _Tp&,
515 template<
typename _FIter,
typename _Predicate,
typename _Tp,
518 __replace_if_switch(_FIter, _FIter, _Predicate,
const _Tp&, _IterTag);
520 template<
typename _RAIter,
typename _Predicate,
typename _Tp>
522 __replace_if_switch(_RAIter, _RAIter, _Predicate,
const _Tp&,
523 random_access_iterator_tag,
527 template<
typename _FIter>
529 max_element(_FIter, _FIter);
531 template<
typename _FIter>
533 max_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
535 template<
typename _FIter>
539 template<
typename _FIter,
typename _Compare>
541 max_element(_FIter, _FIter, _Compare);
543 template<
typename _FIter,
typename _Compare>
545 max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
547 template<
typename _FIter,
typename _Compare>
551 template<
typename _FIter,
typename _Compare,
typename _IterTag>
553 __max_element_switch(_FIter, _FIter, _Compare, _IterTag);
555 template<
typename _RAIter,
typename _Compare>
557 __max_element_switch(
558 _RAIter, _RAIter, _Compare, random_access_iterator_tag,
563 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
565 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
566 __gnu_parallel::sequential_tag);
568 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
571 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
572 __gnu_parallel::sequential_tag);
574 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
577 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare);
579 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
581 merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
583 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
584 typename _Compare,
typename _IterTag1,
typename _IterTag2,
587 __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
588 _IterTag1, _IterTag2, _IterTag3);
590 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
593 __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare,
594 random_access_iterator_tag, random_access_iterator_tag,
595 random_access_iterator_tag);
598 template<
typename _FIter>
600 min_element(_FIter, _FIter);
602 template<
typename _FIter>
604 min_element(_FIter, _FIter, __gnu_parallel::sequential_tag);
606 template<
typename _FIter>
608 min_element(_FIter, _FIter,
611 template<
typename _FIter,
typename _Compare>
613 min_element(_FIter, _FIter, _Compare);
615 template<
typename _FIter,
typename _Compare>
617 min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag);
619 template<
typename _FIter,
typename _Compare>
623 template<
typename _FIter,
typename _Compare,
typename _IterTag>
625 __min_element_switch(_FIter, _FIter, _Compare, _IterTag);
627 template<
typename _RAIter,
typename _Compare>
629 __min_element_switch(
630 _RAIter, _RAIter, _Compare, random_access_iterator_tag,
634 template<
typename _RAIter>
636 nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
638 template<
typename _RAIter,
typename _Compare>
640 nth_element(_RAIter, _RAIter, _RAIter, _Compare,
641 __gnu_parallel::sequential_tag);
643 template<
typename _RAIter,
typename _Compare>
645 nth_element(_RAIter, _RAIter, _RAIter, _Compare);
647 template<
typename _RAIter>
649 nth_element(_RAIter, _RAIter, _RAIter);
651 template<
typename _RAIter,
typename _Compare>
653 partial_sort(_RAIter, _RAIter, _RAIter, _Compare,
654 __gnu_parallel::sequential_tag);
656 template<
typename _RAIter>
658 partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag);
660 template<
typename _RAIter,
typename _Compare>
662 partial_sort(_RAIter, _RAIter, _RAIter, _Compare);
664 template<
typename _RAIter>
666 partial_sort(_RAIter, _RAIter, _RAIter);
668 template<
typename _FIter,
typename _Predicate>
670 partition(_FIter, _FIter, _Predicate, __gnu_parallel::sequential_tag);
672 template<
typename _FIter,
typename _Predicate>
674 partition(_FIter, _FIter, _Predicate);
676 template<
typename _FIter,
typename _Predicate,
typename _IterTag>
678 __partition_switch(_FIter, _FIter, _Predicate, _IterTag);
680 template<
typename _RAIter,
typename _Predicate>
683 _RAIter, _RAIter, _Predicate, random_access_iterator_tag);
685 template<
typename _RAIter>
687 random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
689 template<
typename _RAIter,
typename _RandomNumberGenerator>
691 random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&,
692 __gnu_parallel::sequential_tag);
694 template<
typename _RAIter>
696 random_shuffle(_RAIter, _RAIter);
698 template<
typename _RAIter,
typename _RandomNumberGenerator>
700 random_shuffle(_RAIter, _RAIter,
701#
if __cplusplus >= 201103L
702 _RandomNumberGenerator&&);
704 _RandomNumberGenerator&);
707 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
709 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
710 __gnu_parallel::sequential_tag);
712 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
715 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
716 __gnu_parallel::sequential_tag);
718 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
720 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
722 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
725 set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
727 template<
typename _IIter1,
typename _IIter2,
typename _Predicate,
728 typename _OIter,
typename _IterTag1,
typename _IterTag2,
731 __set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
732 _Predicate, _IterTag1, _IterTag2, _IterTag3);
734 template<
typename _RAIter1,
typename _RAIter2,
typename _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);
741 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
743 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
744 __gnu_parallel::sequential_tag);
746 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
749 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
750 __gnu_parallel::sequential_tag);
752 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
754 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
756 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
759 set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
761 template<
typename _IIter1,
typename _IIter2,
typename _Predicate,
762 typename _OIter,
typename _IterTag1,
typename _IterTag2,
765 __set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
766 _Predicate, _IterTag1, _IterTag2, _IterTag3);
768 template<
typename _RAIter1,
typename _RAIter2,
typename _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);
777 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
779 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
780 __gnu_parallel::sequential_tag);
782 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
785 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
786 _Predicate, __gnu_parallel::sequential_tag);
788 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
790 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
792 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
795 set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
798 template<
typename _IIter1,
typename _IIter2,
typename _Predicate,
799 typename _OIter,
typename _IterTag1,
typename _IterTag2,
802 __set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2,
803 _OIter, _Predicate, _IterTag1, _IterTag2,
806 template<
typename _RAIter1,
typename _RAIter2,
typename _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);
816 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
818 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
819 __gnu_parallel::sequential_tag);
821 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
824 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate,
825 __gnu_parallel::sequential_tag);
827 template<
typename _IIter1,
typename _IIter2,
typename _OIter>
829 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter);
831 template<
typename _IIter1,
typename _IIter2,
typename _OIter,
834 set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate);
836 template<
typename _IIter1,
typename _IIter2,
typename _Predicate,
837 typename _OIter,
typename _IterTag1,
typename _IterTag2,
840 __set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter,
841 _Predicate, _IterTag1, _IterTag2, _IterTag3);
843 template<
typename _RAIter1,
typename _RAIter2,
typename _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);
853 template<
typename _RAIter>
855 sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
857 template<
typename _RAIter,
typename _Compare>
859 sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
861 template<
typename _RAIter>
863 sort(_RAIter, _RAIter);
865 template<
typename _RAIter,
typename _Compare>
867 sort(_RAIter, _RAIter, _Compare);
869 template<
typename _RAIter>
871 stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag);
873 template<
typename _RAIter,
typename _Compare>
875 stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag);
877 template<
typename _RAIter>
879 stable_sort(_RAIter, _RAIter);
881 template<
typename _RAIter,
typename _Compare>
883 stable_sort(_RAIter, _RAIter, _Compare);
885 template<
typename _IIter,
typename _OIter>
887 unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
889 template<
typename _IIter,
typename _OIter,
typename _Predicate>
891 unique_copy(_IIter, _IIter, _OIter, _Predicate,
892 __gnu_parallel::sequential_tag);
894 template<
typename _IIter,
typename _OIter>
896 unique_copy(_IIter, _IIter, _OIter);
898 template<
typename _IIter,
typename _OIter,
typename _Predicate>
900 unique_copy(_IIter, _IIter, _OIter, _Predicate);
902 template<
typename _IIter,
typename _OIter,
typename _Predicate,
903 typename _IterTag1,
typename _IterTag2>
905 __unique_copy_switch(_IIter, _IIter, _OIter, _Predicate,
906 _IterTag1, _IterTag2);
908 template<
typename _RAIter,
typename _RandomAccess_OIter,
typename _Predicate>
910 __unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate,
911 random_access_iterator_tag, random_access_iterator_tag);
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.
pair(_T1, _T2) -> pair< _T1, _T2 >
Two pairs are equal iff their members are equal.
ISO C++ entities toplevel namespace is std.
GNU parallel code, replaces standard behavior with parallel behavior.
_Parallelism
Run-time equivalents for the compile-time tags.
@ parallel_balanced
Parallel balanced (work-stealing).
@ parallel_unbalanced
Parallel unbalanced (equal-sized chunks).