~ubuntu-branches/ubuntu/utopic/libthrust/utopic

« back to all changes in this revision

Viewing changes to iterator/transform_iterator.h

  • Committer: Package Import Robot
  • Author(s): Andreas Beckmann
  • Date: 2013-07-10 12:57:33 UTC
  • mfrom: (1.1.4)
  • Revision ID: package-import@ubuntu.com-20130710125733-my19jic71sqsabaj
Tags: 1.7.0-1
* New upstream release.  (Closes: #715362)
* Update watch file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
 */
16
16
 
17
17
 
18
 
/*! \file transform_iterator.h
 
18
/*! \file thrust/iterator/transform_iterator.h
19
19
 *  \brief An iterator which adapts another iterator by applying a function to the result of its dereference 
20
20
 */
21
21
 
79
79
 *  
80
80
 *  int main(void)
81
81
 *  {
82
 
 *      thrust::device_vector<float> v(4);
83
 
 *      v[0] = 1.0f;
84
 
 *      v[1] = 4.0f;
85
 
 *      v[2] = 9.0f;
86
 
 *      v[3] = 16.0f;
87
 
 *                                                                                             
88
 
 *      typedef thrust::device_vector<float>::iterator FloatIterator;
89
 
 *                                                                                             
90
 
 *      thrust::transform_iterator<square_root, FloatIterator> iter(v.begin(), square_root());
91
 
 *                                                                                             
92
 
 *      *iter;   // returns 1.0f
93
 
 *      iter[0]; // returns 1.0f;
94
 
 *      iter[1]; // returns 2.0f;
95
 
 *      iter[2]; // returns 3.0f;
96
 
 *      iter[3]; // returns 4.0f;
97
 
 *                                                                                             
98
 
 *      // iter[4] is an out-of-bounds error
 
82
 *    thrust::device_vector<float> v(4);
 
83
 *    v[0] = 1.0f;
 
84
 *    v[1] = 4.0f;
 
85
 *    v[2] = 9.0f;
 
86
 *    v[3] = 16.0f;
 
87
 *                                                                                           
 
88
 *    typedef thrust::device_vector<float>::iterator FloatIterator;
 
89
 *                                                                                           
 
90
 *    thrust::transform_iterator<square_root, FloatIterator> iter(v.begin(), square_root());
 
91
 *                                                                                           
 
92
 *    *iter;   // returns 1.0f
 
93
 *    iter[0]; // returns 1.0f;
 
94
 *    iter[1]; // returns 2.0f;
 
95
 *    iter[2]; // returns 3.0f;
 
96
 *    iter[3]; // returns 4.0f;
 
97
 *                                                                                           
 
98
 *    // iter[4] is an out-of-bounds error
99
99
 *  }
100
100
 *  \endcode
101
101
 *
163
163
 *  
164
164
 *  int main(void)
165
165
 *  {
166
 
 *      thrust::device_vector<float> v(4);
167
 
 *      v[0] = 1.0f;
168
 
 *      v[1] = 4.0f;
169
 
 *      v[2] = 9.0f;
170
 
 *      v[3] = 16.0f;
171
 
 *                                                                                             
172
 
 *      typedef thrust::device_vector<float>::iterator FloatIterator;
173
 
 *      
174
 
 *      // note: float result_type is specified explicitly
175
 
 *      thrust::transform_iterator<square_root, FloatIterator, float> iter(v.begin(), square_root());
176
 
 *                                                                                             
177
 
 *      *iter;   // returns 1.0f
178
 
 *      iter[0]; // returns 1.0f;
179
 
 *      iter[1]; // returns 2.0f;
180
 
 *      iter[2]; // returns 3.0f;
181
 
 *      iter[3]; // returns 4.0f;
182
 
 *                                                                                             
183
 
 *      // iter[4] is an out-of-bounds error
 
166
 *    thrust::device_vector<float> v(4);
 
167
 *    v[0] = 1.0f;
 
168
 *    v[1] = 4.0f;
 
169
 *    v[2] = 9.0f;
 
170
 *    v[3] = 16.0f;
 
171
 *                                                                                           
 
172
 *    typedef thrust::device_vector<float>::iterator FloatIterator;
 
173
 *    
 
174
 *    // note: float result_type is specified explicitly
 
175
 *    thrust::transform_iterator<square_root, FloatIterator, float> iter(v.begin(), square_root());
 
176
 *                                                                                           
 
177
 *    *iter;   // returns 1.0f
 
178
 *    iter[0]; // returns 1.0f;
 
179
 *    iter[1]; // returns 2.0f;
 
180
 *    iter[2]; // returns 3.0f;
 
181
 *    iter[3]; // returns 4.0f;
 
182
 *                                                                                           
 
183
 *    // iter[4] is an out-of-bounds error
184
184
 *  }
185
185
 *  \endcode
186
186
 *
197
197
    detail::transform_iterator_base<AdaptableUnaryFunction, Iterator, Reference, Value>::type
198
198
    super_t;
199
199
 
200
 
    friend class experimental::iterator_core_access;
 
200
    friend class thrust::iterator_core_access;
201
201
  /*! \endcond
202
202
   */
203
203
 
296
296
      return *this;
297
297
    }
298
298
 
 
299
    __thrust_hd_warning_disable__
299
300
    __host__ __device__
300
301
    typename super_t::reference dereference() const
301
302
    { 
320
321
 *  \param it The \c Iterator pointing to the input range of the
321
322
 *            newly created \p transform_iterator.
322
323
 *  \param fun The \c AdaptableUnaryFunction used to transform the range pointed
323
 
 *             bo by \p it in the newly created \p transform_iterator.
 
324
 *             to by \p it in the newly created \p transform_iterator.
324
325
 *  \return A new \p transform_iterator which transforms the range at
325
326
 *          \p it by \p fun.
326
327
 *  \see transform_iterator