21 #ifndef ROCPRIM_ITERATOR_REPLACE_FIRST_ITERATOR_HPP_ 22 #define ROCPRIM_ITERATOR_REPLACE_FIRST_ITERATOR_HPP_ 26 #include <type_traits> 28 #include "../../config.hpp" 30 BEGIN_ROCPRIM_NAMESPACE
49 template<
class InputIterator>
53 using input_category =
typename std::iterator_traits<InputIterator>::iterator_category;
55 std::is_same<input_category, std::random_access_iterator_tag>::value,
56 "InputIterator must be a random-access iterator" 60 using value_type =
typename std::iterator_traits<InputIterator>::value_type;
61 using reference = value_type;
62 using pointer =
const value_type*;
63 using difference_type =
typename std::iterator_traits<InputIterator>::difference_type;
64 using iterator_category = std::random_access_iterator_tag;
66 ROCPRIM_HOST_DEVICE
inline 69 ROCPRIM_HOST_DEVICE
inline 71 : iterator_(iterator), value_(value), index_(index)
75 ROCPRIM_HOST_DEVICE
inline 76 replace_first_iterator& operator++()
83 ROCPRIM_HOST_DEVICE
inline 84 replace_first_iterator operator++(
int)
86 replace_first_iterator old = *
this;
92 ROCPRIM_HOST_DEVICE
inline 93 value_type operator*()
const 102 ROCPRIM_HOST_DEVICE
inline 103 value_type operator[](difference_type distance)
const 105 replace_first_iterator i = (*this) + distance;
109 ROCPRIM_HOST_DEVICE
inline 110 replace_first_iterator operator+(difference_type distance)
const 112 return replace_first_iterator(iterator_ + distance, value_, index_ + distance);
115 ROCPRIM_HOST_DEVICE
inline 116 replace_first_iterator& operator+=(difference_type distance)
118 iterator_ += distance;
124 InputIterator iterator_;
131 END_ROCPRIM_NAMESPACE
133 #endif // ROCPRIM_ITERATOR_REPLACE_FIRST_ITERATOR_HPP_ Deprecated: Configuration of device-level scan primitives.
Definition: block_histogram.hpp:62
Definition: replace_first_iterator.hpp:50