Changeset 1067
- Timestamp:
- Feb 11, 2008, 12:09:04 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/yat/utility/Iterator.h
r1062 r1067 41 41 template<typename Container, typename T> 42 42 class Iterator 43 : public std::iterator<std::random_access_iterator_tag, double, size_t, T, 44 void> 43 45 { 44 46 public: 45 typedef std::random_access_iterator_tag iterator_category; 46 typedef double value_type; 47 typedef size_t difference_type; 47 //typedef size_t difference_type; 48 48 typedef T reference; 49 49 typedef double* pointer; … … 65 65 \param colun telling which column iterator points to 66 66 */ 67 Iterator(Container& container, difference_type row, difference_typecolumn)67 Iterator(Container& container, size_t row, size_t column) 68 68 : container_(&container), index_(row*container.columns()+column) {} 69 69 … … 81 81 \return element \a n steps forward 82 82 */ 83 reference operator[]( difference_typen) const83 reference operator[](size_t n) const 84 84 { 85 85 yat_assert<std::out_of_range>(index_+n < this->size(), … … 137 137 \return copy of resulting iterator 138 138 */ 139 friend Iterator operator+(const Iterator& lhs, difference_typen)139 friend Iterator operator+(const Iterator& lhs, size_t n) 140 140 { return self(*lhs.container_, lhs.index_+n); } 141 141 … … 145 145 \return copy of resulting iterator 146 146 */ 147 friend Iterator operator-(const Iterator& lhs, difference_typen)147 friend Iterator operator-(const Iterator& lhs, size_t n) 148 148 { return self(*lhs.container_, lhs.index_-n); } 149 149 … … 153 153 \return distance between \a lhs and \a rhs 154 154 */ 155 friend difference_typeoperator-(const Iterator& lhs, const Iterator& rhs)155 friend size_t operator-(const Iterator& lhs, const Iterator& rhs) 156 156 { 157 157 yat_assert<std::runtime_error>(lhs.container_==rhs.container_, … … 227 227 private: 228 228 Container* container_; 229 difference_typeindex_;230 231 difference_type column(difference_typei) const229 size_t index_; 230 231 size_t column(size_t i) const 232 232 { return i % container_->columns(); } 233 difference_type row(difference_typei) const234 { return static_cast< difference_type>(i/container_->columns()); }235 difference_typesize() const233 size_t row(size_t i) const 234 { return static_cast<size_t>(i/container_->columns()); } 235 size_t size() const 236 236 { return container_->columns()*container_->rows(); } 237 237
Note: See TracChangeset
for help on using the changeset viewer.