33 #ifndef _GLIBCXX_PARALLEL_FIND_SELECTORS_H
34 #define _GLIBCXX_PARALLEL_FIND_SELECTORS_H 1
57 template<
typename RandomAccessIterator1,
typename RandomAccessIterator2,
60 operator()(RandomAccessIterator1 i1, RandomAccessIterator2 i2, Pred pred)
69 template<
typename RandomAccessIterator1,
typename RandomAccessIterator2,
73 RandomAccessIterator1 end1,
74 RandomAccessIterator2 begin2, Pred pred)
75 {
return std::make_pair(find_if(begin1, end1, pred,
87 template<
typename RandomAccessIterator1,
typename RandomAccessIterator2,
90 operator()(RandomAccessIterator1 i1, RandomAccessIterator2 i2, Pred pred)
93 return pred(*i1, *(i1 + 1));
102 template<
typename RandomAccessIterator1,
typename RandomAccessIterator2,
106 RandomAccessIterator1 end1,
107 RandomAccessIterator2 begin2, Pred pred)
110 RandomAccessIterator1 spot = adjacent_find(begin1, end1 + 1,
112 if (spot == (end1 + 1))
114 return std::make_pair(spot, begin2);
127 template<
typename RandomAccessIterator1,
typename RandomAccessIterator2,
130 operator()(RandomAccessIterator1 i1, RandomAccessIterator2 i2, Pred pred)
131 {
return !pred(*i1, *i2); }
140 template<
typename RandomAccessIterator1,
typename RandomAccessIterator2,
144 RandomAccessIterator1 end1,
145 RandomAccessIterator2 begin2, Pred pred)
146 {
return mismatch(begin1, end1, begin2, pred,
sequential_tag()); }
151 template<
typename ForwardIterator>
154 ForwardIterator begin;
158 : begin(begin), end(end) { }
164 template<
typename RandomAccessIterator1,
typename RandomAccessIterator2,
167 operator()(RandomAccessIterator1 i1, RandomAccessIterator2 i2, Pred pred)
169 for (ForwardIterator pos_in_candidates = begin;
170 pos_in_candidates != end; ++pos_in_candidates)
171 if (pred(*i1, *pos_in_candidates))
181 template<
typename RandomAccessIterator1,
typename RandomAccessIterator2,
185 RandomAccessIterator1 end1,
186 RandomAccessIterator2 begin2, Pred pred)
187 {
return std::make_pair(find_first_of(begin1, end1, begin, end, pred,
std::pair< RandomAccessIterator1, RandomAccessIterator2 > sequential_algorithm(RandomAccessIterator1 begin1, RandomAccessIterator1 end1, RandomAccessIterator2 begin2, Pred pred)
Corresponding sequential algorithm on a sequence.
std::pair< RandomAccessIterator1, RandomAccessIterator2 > sequential_algorithm(RandomAccessIterator1 begin1, RandomAccessIterator1 end1, RandomAccessIterator2 begin2, Pred pred)
Corresponding sequential algorithm on a sequence.
Forces sequential execution at compile time.
GNU parallel code for public use.
pair holds two objects of arbitrary type.
Test predicate on two adjacent elements.
Test inverted predicate on a single element.
Test predicate on a single element, used for std::find() and std::find_if ().
bool operator()(RandomAccessIterator1 i1, RandomAccessIterator2 i2, Pred pred)
Test on one position.
std::pair< RandomAccessIterator1, RandomAccessIterator2 > sequential_algorithm(RandomAccessIterator1 begin1, RandomAccessIterator1 end1, RandomAccessIterator2 begin2, Pred pred)
Corresponding sequential algorithm on a sequence.
std::pair< RandomAccessIterator1, RandomAccessIterator2 > sequential_algorithm(RandomAccessIterator1 begin1, RandomAccessIterator1 end1, RandomAccessIterator2 begin2, Pred pred)
Corresponding sequential algorithm on a sequence.
Includes the original header files concerned with iterators except for stream iterators. This file is a GNU parallel extension to the Standard C++ Library.
Tags for compile-time selection. This file is a GNU parallel extension to the Standard C++ Library...
bool operator()(RandomAccessIterator1 i1, RandomAccessIterator2 i2, Pred pred)
Test on one position.
Test predicate on several elements.
bool operator()(RandomAccessIterator1 i1, RandomAccessIterator2 i2, Pred pred)
Test on one position.
bool operator()(RandomAccessIterator1 i1, RandomAccessIterator2 i2, Pred pred)
Test on one position.
Base class of all __gnu_parallel::find_template selectors.