@@ -122,8 +122,7 @@ namespace alp {
122122 class VectorIterator :
123123 public std::iterator< std::random_access_iterator_tag, T > {
124124
125- friend VectorIterator internal::begin<>( self_type & v ) noexcept ;
126- friend VectorIterator internal::end<>( self_type & v ) noexcept ;
125+ friend class Vector < T, structures::General, Density::Dense, View, ImfR, ImfC, backend >;
127126
128127 private:
129128
@@ -132,12 +131,12 @@ namespace alp {
132131 self_type * vec;
133132 index_type position;
134133
135- VectorIterator ( self_type * v ) noexcept :
136- vec ( v ), position( 0 )
134+ VectorIterator ( self_type * vptr ) noexcept :
135+ vec ( vptr ), position( 0 )
137136 {}
138137
139- VectorIterator ( self_type * v , index_type pos ) noexcept :
140- vec ( v ), position( pos )
138+ VectorIterator ( self_type * vptr , index_type pos ) noexcept :
139+ vec ( vptr ), position( pos )
141140 {}
142141
143142 bool equal ( const VectorIterator & other ) const noexcept {
@@ -278,10 +277,22 @@ namespace alp {
278277 return nrows ( static_cast < const base_type & >( *this ) );
279278 }
280279
280+ VectorIterator begin () noexcept {
281+ return VectorIterator ( this );
282+ }
283+
284+ VectorIterator end () noexcept {
285+ return VectorIterator ( this , _length () );
286+ }
287+
288+
281289 public:
282290
283291 typedef VectorIterator iterator;
284292
293+ friend iterator internal::begin<>( self_type & v ) noexcept ;
294+ friend iterator internal::end<>( self_type & v ) noexcept ;
295+
285296 /* * @see Vector::value_type. */
286297 using value_type = T;
287298
@@ -468,13 +479,13 @@ namespace alp {
468479 template < typename T, typename Structure, typename View, typename ImfR, typename ImfC, enum Backend backend >
469480 typename alp::Vector< T, Structure, Density::Dense, View, ImfR, ImfC, backend >::iterator
470481 begin ( alp::Vector< T, Structure, Density::Dense, View, ImfR, ImfC, backend > & v ) noexcept {
471- return typename alp::Vector< T, Structure, Density::Dense, View, ImfR, ImfC, backend >:: iterator ( &v );
482+ return v. begin ( );
472483 }
473484
474485 template < typename T, typename Structure, typename View, typename ImfR, typename ImfC, enum Backend backend >
475486 typename alp::Vector< T, Structure, Density::Dense, View, ImfR, ImfC, backend >::iterator
476487 end ( alp::Vector< T, Structure, Density::Dense, View, ImfR, ImfC, backend > & v ) noexcept {
477- return typename alp::Vector< T, Structure, Density::Dense, View, ImfR, ImfC, backend >:: iterator ( &v, getLength ( v ) );
488+ return v. end ( );
478489 }
479490
480491 } // end namespace ``alp::internal''
0 commit comments