33 #ifndef _GLIBCXX_PARALLEL_FIND_SELECTORS_H
34 #define _GLIBCXX_PARALLEL_FIND_SELECTORS_H 1
40 namespace __gnu_parallel
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,
bool operator()(RandomAccessIterator1 i1, RandomAccessIterator2 i2, Pred pred)
Test on one position.
pair holds two objects of arbitrary type.
Base class of all __gnu_parallel::find_template selectors.
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.
Test predicate on a single element, used for std::find() and std::find_if ().
Forces sequential execution at compile time.
Test predicate on two adjacent elements.
Test inverted predicate on a single element.
Tags for compile-time selection. This file is a GNU parallel extension to the Standard C++ Library...
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.
Test predicate on several elements.
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.
Includes the original header files concerned with iterators except for stream iterators. This file is a GNU parallel extension to the Standard C++ Library.
bool operator()(RandomAccessIterator1 i1, RandomAccessIterator2 i2, Pred pred)
Test on one position.