...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
A vector referencing a non continuous subvector of elements of vector v containing all elements specified by slice
.
More...
Inherits vector_expression< vector_slice< V > >.
Classes | |
class | const_iterator |
class | iterator |
Public Types | |
typedef const V | const_vector_type |
typedef V | vector_type |
typedef V::size_type | size_type |
typedef V::difference_type | difference_type |
typedef V::value_type | value_type |
typedef V::const_reference | const_reference |
typedef boost::mpl::if_ < boost::is_const< V > , typename V::const_reference, typename V::reference >::type | reference |
typedef boost::mpl::if_ < boost::is_const< V > , typename V::const_closure_type, typename V::closure_type > ::type | vector_closure_type |
typedef basic_range< size_type, difference_type > | range_type |
typedef basic_slice< size_type, difference_type > | slice_type |
typedef const self_type | const_closure_type |
typedef self_type | closure_type |
typedef storage_restrict_traits < typename V::storage_category, dense_proxy_tag > ::storage_category | storage_category |
typedef reverse_iterator_base < const_iterator > | const_reverse_iterator |
typedef reverse_iterator_base < iterator > | reverse_iterator |
Public Member Functions | |
BOOST_UBLAS_INLINE | vector_slice (vector_type &data, const slice_type &s) |
BOOST_UBLAS_INLINE | vector_slice (const vector_closure_type &data, const slice_type &s, int) |
BOOST_UBLAS_INLINE size_type | start () const |
BOOST_UBLAS_INLINE difference_type | stride () const |
BOOST_UBLAS_INLINE size_type | size () const |
BOOST_UBLAS_INLINE const vector_closure_type & | data () const |
BOOST_UBLAS_INLINE vector_closure_type & | data () |
BOOST_UBLAS_INLINE const_reference | operator() (size_type i) const |
BOOST_UBLAS_INLINE reference | operator() (size_type i) |
BOOST_UBLAS_INLINE const_reference | operator[] (size_type i) const |
BOOST_UBLAS_INLINE reference | operator[] (size_type i) |
BOOST_UBLAS_INLINE vector_slice< vector_type > | project (const range_type &r) const |
BOOST_UBLAS_INLINE vector_slice< vector_type > | project (const slice_type &s) const |
BOOST_UBLAS_INLINE vector_slice & | operator= (const vector_slice &vs) |
BOOST_UBLAS_INLINE vector_slice & | assign_temporary (vector_slice &vs) |
template<class AE > | |
BOOST_UBLAS_INLINE vector_slice & | operator= (const vector_expression< AE > &ae) |
template<class AE > | |
BOOST_UBLAS_INLINE vector_slice & | assign (const vector_expression< AE > &ae) |
template<class AE > | |
BOOST_UBLAS_INLINE vector_slice & | operator+= (const vector_expression< AE > &ae) |
template<class AE > | |
BOOST_UBLAS_INLINE vector_slice & | plus_assign (const vector_expression< AE > &ae) |
template<class AE > | |
BOOST_UBLAS_INLINE vector_slice & | operator-= (const vector_expression< AE > &ae) |
template<class AE > | |
BOOST_UBLAS_INLINE vector_slice & | minus_assign (const vector_expression< AE > &ae) |
template<class AT > | |
BOOST_UBLAS_INLINE vector_slice & | operator*= (const AT &at) |
template<class AT > | |
BOOST_UBLAS_INLINE vector_slice & | operator/= (const AT &at) |
BOOST_UBLAS_INLINE bool | same_closure (const vector_slice &vr) const |
BOOST_UBLAS_INLINE bool | operator== (const vector_slice &vs) const |
BOOST_UBLAS_INLINE void | swap (vector_slice vs) |
BOOST_UBLAS_INLINE const_iterator | find (size_type i) const |
BOOST_UBLAS_INLINE iterator | find (size_type i) |
BOOST_UBLAS_INLINE const_iterator | begin () const |
BOOST_UBLAS_INLINE const_iterator | end () const |
BOOST_UBLAS_INLINE iterator | begin () |
BOOST_UBLAS_INLINE iterator | end () |
BOOST_UBLAS_INLINE const_reverse_iterator | rbegin () const |
BOOST_UBLAS_INLINE const_reverse_iterator | rend () const |
BOOST_UBLAS_INLINE reverse_iterator | rbegin () |
BOOST_UBLAS_INLINE reverse_iterator | rend () |
Friends | |
BOOST_UBLAS_INLINE friend void | swap (vector_slice vs1, vector_slice vs2) |
A vector slice can be used as a normal vector in any expression. If the specified slice falls outside that of the index slice of the vector, then the vector_slice
is not a well formed Vector Expression and access to an element outside of index slice of the vector is undefined.
A slice is a generalization of a range. In a range going from to , all elements belong to the range. In a slice, a can be specified meaning to take one element over in the range specified from to . Obviously, a slice with a of 1 is equivalent to a range.
V | the type of vector referenced (for example vector<double> ) |