40 #ifndef ECUDA_ALGO_FIND_IF_NOT_HPP
41 #define ECUDA_ALGO_FIND_IF_NOT_HPP
43 #ifdef ECUDA_CPP11_AVAILABLE
49 #include "../global.hpp"
50 #include "../iterator.hpp"
58 template<
class InputIterator,
class UnaryPredicate>
60 find_if_not( InputIterator first, InputIterator last, UnaryPredicate p, ecuda::true_type )
63 while( first != last ) {
64 if( p(*first) )
return first;
69 typedef typename ecuda::remove_const<typename ecuda::iterator_traits<InputIterator>::value_type>::type value_type;
70 std::vector< value_type, host_allocator<value_type> > v(
ecuda::distance(first,last) );
79 template<
class InputIterator,
class UnaryPredicate>
81 find_if_not( InputIterator first, InputIterator last, UnaryPredicate p, ecuda::false_type )
86 return std::find_if_not( first, last, p );
94 template<
class InputIterator,
class UnaryPredicate>
96 find_if_not( InputIterator first, InputIterator last, UnaryPredicate p )
102 template<
class InputIterator,
class UnaryPredicate>
104 all_of( InputIterator first, InputIterator last, UnaryPredicate p )
106 return ecuda::find_if_not( first, last, p ) == last;
111 #endif // ECUDA_CPP11_AVAILABLE
__HOST__ __DEVICE__ OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result)
Replacement for std::copy.
ECUDA_SUPPRESS_HD_WARNINGS __HOST__ __DEVICE__ void advance(InputIterator &iterator, Distance n)
Increments given iterator by n elements.
ecuda::false_type is_device_iterator
base_type::difference_type difference_type
#define ECUDA_SUPPRESS_HD_WARNINGS
ECUDA_SUPPRESS_HD_WARNINGS __HOST__ __DEVICE__ std::iterator_traits< Iterator >::difference_type distance(const Iterator &first, const Iterator &last)