The 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/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_iterator pointing to the beginning
of the vector_range . |
const_iterator end () const |
Returns a const_iterator pointing to the end of
the vector_range . |
iterator begin () |
Returns a iterator pointing to the beginning of
the vector_range . |
iterator end () |
Returns a iterator pointing to the end of the
vector_range . |
const_reverse_iterator rbegin () const |
Returns a const_reverse_iterator pointing to the
beginning of the reversed vector_range . |
const_reverse_iterator rend () const |
Returns a const_reverse_iterator pointing to the
end of the reversed vector_range . |
reverse_iterator rbegin () |
Returns a reverse_iterator pointing to the
beginning of the reversed vector_range . |
reverse_iterator rend () |
Returns a reverse_iterator pointing to the end of
the reversed vector_range . |
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 (const vector_range<V> &data, const range &r);
The free project
functions support the construction
of vector ranges.
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/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/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_iterator pointing to the beginning
of the vector_slice . |
const_iterator end () const |
Returns a const_iterator pointing to the end of
the vector_slice . |
iterator begin () |
Returns a iterator pointing to the beginning of
the vector_slice . |
iterator end () |
Returns a iterator pointing to the end of the
vector_slice . |
const_reverse_iterator rbegin () const |
Returns a const_reverse_iterator pointing to the
beginning of the reversed vector_slice . |
const_reverse_iterator rend () const |
Returns a const_reverse_iterator pointing to the
end of the reversed vector_slice . |
reverse_iterator rbegin () |
Returns a reverse_iterator pointing to the
beginning of the reversed vector_slice . |
reverse_iterator rend () |
Returns a reverse_iterator pointing to the end of
the reversed vector_slice . |
template<class V>
vector_slice<V> project (const vector_slice<V> &data, const range &r);
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 (const vector_slice<V> &data, const slice &s);
The free project
functions support the construction
of vector slices.
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/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
Permission to copy, use, modify, sell and distribute this document
is granted provided this copyright notice appears in all copies.
This document is provided ``as is'' without express or implied
warranty, and with no claim as to its suitability for any
purpose.
Last revised: 15/04/2004