40 #ifndef ECUDA_ALGO_MISMATCH_HPP
41 #define ECUDA_ALGO_MISMATCH_HPP
46 #include "../global.hpp"
47 #include "../iterator.hpp"
48 #include "../utility.hpp"
55 template<
class InputIterator1,
class InputIterator2>
63 std::pair<InputIterator1,InputIterator2> p =
std::mismatch( first1, last1, first2 );
69 template<
class InputIterator1,
class InputIterator2>
76 typedef typename ecuda::remove_const<typename ecuda::iterator_traits<InputIterator2>::value_type>::type value_type2;
77 typedef std::vector< value_type2, host_allocator<value_type2> > vector_type2;
79 ecuda::copy( first2, first2+v2.size(), v2.begin() );
80 std::pair<InputIterator1,typename vector_type2::iterator> p =
std::mismatch( first1, last1, v2.begin() );
86 template<
class InputIterator1,
class InputIterator2>
93 InputIterator2 last2 = first2;
101 template<
class InputIterator1,
class InputIterator2>
106 while( (first1 != last1) && (*first1 == *first2) ) { ++first1; ++first2; }
109 typedef typename ecuda::remove_const<typename ecuda::iterator_traits<InputIterator1>::value_type>::type value_type1;
110 typedef std::vector< value_type1, host_allocator<value_type1> > vector_type1;
112 typedef typename ecuda::remove_const<typename ecuda::iterator_traits<InputIterator2>::value_type>::type value_type2;
113 typedef std::vector< value_type2, host_allocator<value_type2> > vector_type2;
114 vector_type2 v2( v1.size() );
116 InputIterator2 last2 = first2;
119 std::pair<typename vector_type1::iterator,typename vector_type2::iterator> p =
std::mismatch( v1.begin(), v1.end(), v2.begin() );
130 template<
class InputIterator1,
class InputIterator2>
132 mismatch( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2 )
__HOST__ __DEVICE__ OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result)
Replacement for std::copy.
ECUDA_SUPPRESS_HD_WARNINGS __HOST__ __DEVICE__ ecuda::pair< InputIterator1, InputIterator2 > mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2)
ECUDA_SUPPRESS_HD_WARNINGS __HOST__ __DEVICE__ void advance(InputIterator &iterator, Distance n)
Increments given iterator by n elements.
ecuda::false_type is_device_iterator
Couples together a pair of values.
#define ECUDA_SUPPRESS_HD_WARNINGS
ECUDA_SUPPRESS_HD_WARNINGS __HOST__ __DEVICE__ std::iterator_traits< Iterator >::difference_type distance(const Iterator &first, const Iterator &last)