83 typedef typename ::cuda::std::iterator_traits<RandomAccessIterator>::value_type value_type;
84 typedef typename thrust::iterator_system<RandomAccessIterator>::type memory_space;
85 typedef typename ::cuda::std::iterator_traits<RandomAccessIterator>::pointer pointer;
86 typedef typename ::cuda::std::iterator_traits<RandomAccessIterator>::reference reference;
87 typedef typename ::cuda::std::iterator_traits<RandomAccessIterator>::difference_type difference_type;
88 typedef typename ::cuda::std::iterator_traits<RandomAccessIterator>::difference_type size_type;
91 typedef typename thrust::counting_iterator<difference_type> CountingIterator;
92 typedef typename thrust::transform_iterator<StrideFunctor, CountingIterator> TransformIterator;
93 typedef typename thrust::permutation_iterator<RandomAccessIterator,TransformIterator> PermutationIterator;
96 typedef PermutationIterator iterator;
109 strided_iterator(RandomAccessIterator first, RandomAccessIterator last, difference_type stride)
110 : first(first), last(last), stride(stride) {}
118 return PermutationIterator(first, TransformIterator(CountingIterator(0), StrideFunctor(stride)));
127 return begin() + (::cuda::std::distance(first,last) + (stride - 1)) / stride;
140 return *(
begin() + n);
146 RandomAccessIterator first;
147 RandomAccessIterator last;
148 difference_type stride;