 Vector Proxies
Vector ProxiesThe templated class vector_range<V> allows
addressing a sub-range of a vector's element.
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/vector_proxy.hpp>
#include <boost/numeric/ublas/io.hpp>
int main () {
    using namespace boost::numeric::ublas;
    vector<double> v (3);
    vector_range<vector<double> > vr (v, range (0, 3));
    for (unsigned i = 0; i < vr.size (); ++ i)
        vr (i) = i;
    std::cout << vr << std::endl;
}
Defined in the header vector_proxy.hpp.
| Parameter | Description | Default | 
|---|---|---|
| V | The type of vector referenced. | 
If the specified range falls outside that of the index range of
the vector, then the vector_range is not a well formed
Vector Expression. That is, access to an element which is outside
of index range of the vector is undefined.
None, except for those imposed by the requirements of Vector Expression .
vector_expression<vector_range<V> >
| Member | Description | 
|---|---|
| vector_range (vector_type &data, const range
&r) | Constructs a sub vector. | 
| size_type start () const | Returns the start of the sub vector. | 
| size_type size () const | Returns the size of the sub vector. | 
| const_reference operator () (size_type i)
const | Returns the value of the i-th element. | 
| reference operator () (size_type i) | Returns a reference of the i-th element. | 
| const_reference operator [] (size_type i)
const | Returns the value of the i-th element. | 
| reference operator [] (size_type i) | Returns a reference of the i-th element. | 
| vector_range &operator = (const vector_range
&vr) | The assignment operator. | 
| vector_range &assign_temporary (vector_range
&vr) | Assigns a temporary. May change the vector range vr. | 
| template<class AE> | The extended assignment operator. | 
| template<class AE> | Assigns a vector expression to the sub vector. Left and right hand side of the assignment should be independent. | 
| template<class AE> | A computed assignment operator. Adds the vector expression to the sub vector. | 
| template<class AE> | Adds a vector expression to the sub vector. Left and right hand side of the assignment should be independent. | 
| template<class AE> | A computed assignment operator. Subtracts the vector expression from the sub vector. | 
| template<class AE> | Subtracts a vector expression from the sub vector. Left and right hand side of the assignment should be independent. | 
| template<class AT> | A computed assignment operator. Multiplies the sub vector with a scalar. | 
| template<class AT> | A computed assignment operator. Divides the sub vector through a scalar. | 
| void swap (vector_range &vr) | Swaps the contents of the sub vectors. | 
| const_iterator begin () const | Returns a const_iteratorpointing to the beginning
of thevector_range. | 
| const_iterator end () const | Returns a const_iteratorpointing to the end of
thevector_range. | 
| iterator begin () | Returns a iteratorpointing to the beginning of
thevector_range. | 
| iterator end () | Returns a iteratorpointing to the end of thevector_range. | 
| const_reverse_iterator rbegin () const | Returns a const_reverse_iteratorpointing to the
beginning of the reversedvector_range. | 
| const_reverse_iterator rend () const | Returns a const_reverse_iteratorpointing to the
end of the reversedvector_range. | 
| reverse_iterator rbegin () | Returns a reverse_iteratorpointing to the
beginning of the reversedvector_range. | 
| reverse_iterator rend () | Returns a reverse_iteratorpointing to the end of
the reversedvector_range. | 
The free subrange functions support the construction
of vector ranges.
    template<class V>
    vector_range<V> subrange (V &data,
       V::size_type start, V::size_type stop);
    template<class V>
    const vector_range<const V> subrange (const V &data,
       V::size_type start, V::size_type stop);
The free project functions support the construction
of vector ranges. Existing matrix_range's can be composed with a further range. The resulting range is computed using this existing range's compose function.
    template<class V>
    vector_range<V> project (V &data, const range &r);
    template<class V>
    const vector_range<const V> project (const V &data, const range &r);
    template<class V>
    vector_range<V> project (vector_range<V> &data, const range &r);
    template<class V>
    const vector_range<V> project (const vector_range<V> &data, const range &r);
Defined in the header vector_proxy.hpp.
V is a model of Vector Expression .Linear depending from the size of the range.
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/vector_proxy.hpp>
#include <boost/numeric/ublas/io.hpp>
int main () {
    using namespace boost::numeric::ublas;
    vector<double> v (3);
    for (int i = 0; i < 3; ++ i)
        project (v, range (0, 3)) (i) = i;
    std::cout << project (v, range (0, 3)) << std::endl;
}
The templated class vector_slice<V> allows
addressing a slice of a vector.
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/vector_proxy.hpp>
#include <boost/numeric/ublas/io.hpp>
int main () {
    using namespace boost::numeric::ublas;
    vector<double> v (3);
    vector_slice<vector<double> > vs (v, slice (0, 1, 3));
    for (unsigned i = 0; i < vs.size (); ++ i)
        vs (i) = i;
    std::cout << vs << std::endl;
}
Defined in the header vector_proxy.hpp.
| Parameter | Description | Default | 
|---|---|---|
| V | The type of vector referenced. | 
If the specified slice falls outside that of the index range of
the vector, then the vector_slice is not a well formed
Vector Expression. That is, access to an element which is outside
of index range of the vector is undefined.
None, except for those imposed by the requirements of Vector Expression .
vector_expression<vector_slice<V> >
| Member | Description | 
|---|---|
| vector_slice (vector_type &data, const slice
&s) | Constructs a sub vector. | 
| size_type size () const | Returns the size of the sub vector. | 
| const_reference operator () (size_type i)
const | Returns the value of the i-th element. | 
| reference operator () (size_type i) | Returns a reference of the i-th element. | 
| const_reference operator [] (size_type i)
const | Returns the value of the i-th element. | 
| reference operator [] (size_type i) | Returns a reference of the i-th element. | 
| vector_slice &operator = (const vector_slice
&vs) | The assignment operator. | 
| vector_slice &assign_temporary (vector_slice
&vs) | Assigns a temporary. May change the vector slice vs. | 
| template<class AE> | The extended assignment operator. | 
| template<class AE> | Assigns a vector expression to the sub vector. Left and right hand side of the assignment should be independent. | 
| template<class AE> | A computed assignment operator. Adds the vector expression to the sub vector. | 
| template<class AE> | Adds a vector expression to the sub vector. Left and right hand side of the assignment should be independent. | 
| template<class AE> | A computed assignment operator. Subtracts the vector expression from the sub vector. | 
| template<class AE> | Subtracts a vector expression from the sub vector. Left and right hand side of the assignment should be independent. | 
| template<class AT> | A computed assignment operator. Multiplies the sub vector with a scalar. | 
| template<class AT> | A computed assignment operator. Divides the sub vector through a scalar. | 
| void swap (vector_slice &vs) | Swaps the contents of the sub vectors. | 
| const_iterator begin () const | Returns a const_iteratorpointing to the beginning
of thevector_slice. | 
| const_iterator end () const | Returns a const_iteratorpointing to the end of
thevector_slice. | 
| iterator begin () | Returns a iteratorpointing to the beginning of
thevector_slice. | 
| iterator end () | Returns a iteratorpointing to the end of thevector_slice. | 
| const_reverse_iterator rbegin () const | Returns a const_reverse_iteratorpointing to the
beginning of the reversedvector_slice. | 
| const_reverse_iterator rend () const | Returns a const_reverse_iteratorpointing to the
end of the reversedvector_slice. | 
| reverse_iterator rbegin () | Returns a reverse_iteratorpointing to the
beginning of the reversedvector_slice. | 
| reverse_iterator rend () | Returns a reverse_iteratorpointing to the end of
the reversedvector_slice. | 
The free subslice functions support the construction
of vector slices.
    template<class V>
    vector_slice<V> subslice (V &data,
       V::size_type start, V::difference_type stride, V::size_type size);
    template<class V>
    const vector_slice<const V> subslice (const V &data,
       V::size_type start, V::difference_type stride, V::size_type size);
The free project functions support the construction
of vector slices. Existing vector_slice's can be composed with a further range or slices. The resulting slice is computed using this existing slices's compose function.
    template<class V>
    vector_slice<V> project (V &data, const slice &s);
    template<class V>
    const vector_slice<const V> project (const V &data, const slice &s);
    template<class V>
    vector_slice<V> project (vector_slice<V> &data, const range &r);
    template<class V>
    const vector_slice<V> project (const vector_slice<V> &data, const range &r);
    template<class V>
    vector_slice<V> project (vector_slice<V> &data, const slice &s);
    template<class V>
    const vector_slice<V> project (const vector_slice<V> &data, const slice &s);
Defined in the header vector_proxy.hpp.
V is a model of Vector Expression .Linear depending from the size of the slice.
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/vector_proxy.hpp>
#include <boost/numeric/ublas/io.hpp>
int main () {
    using namespace boost::numeric::ublas;
    vector<double> v (3);
    for (int i = 0; i < 3; ++ i)
        project (v, slice (0, 1, 3)) (i) = i;
    std::cout << project (v, slice (0, 1, 3)) << std::endl;
}
Copyright (©) 2000-2002 Joerg Walter, Mathias Koch
   Use, modification and distribution are subject to the
   Boost Software License, Version 1.0.
   (See accompanying file LICENSE_1_0.txt
   or copy at 
      http://www.boost.org/LICENSE_1_0.txt
   ).