A matrix referencing a non continuous submatrix of elements given another matrix of indices. More...
#include <matrix_proxy.hpp>
Classes | |
class | const_iterator1 |
class | const_iterator2 |
class | iterator1 |
class | iterator2 |
Public Types | |
typedef M | matrix_type |
typedef IA | indirect_array_type |
typedef M::size_type | size_type |
typedef M::difference_type | difference_type |
typedef M::value_type | value_type |
typedef M::const_reference | const_reference |
typedef boost::mpl::if_ < boost::is_const< M > , typename M::const_reference, typename M::reference >::type | reference |
typedef boost::mpl::if_ < boost::is_const< M > , typename M::const_closure_type, typename M::closure_type > ::type | matrix_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 M::storage_category, dense_proxy_tag > ::storage_category | storage_category |
typedef M::orientation_category | orientation_category |
typedef reverse_iterator_base1 < const_iterator1 > | const_reverse_iterator1 |
typedef reverse_iterator_base1 < iterator1 > | reverse_iterator1 |
typedef reverse_iterator_base2 < const_iterator2 > | const_reverse_iterator2 |
typedef reverse_iterator_base2 < iterator2 > | reverse_iterator2 |
typedef matrix_indirect< M, IA > | expression_type |
typedef matrix_tag | type_category |
Public Member Functions | |
BOOST_UBLAS_INLINE | matrix_indirect (matrix_type &data, size_type size1, size_type size2) |
BOOST_UBLAS_INLINE | matrix_indirect (matrix_type &data, const indirect_array_type &ia1, const indirect_array_type &ia2) |
BOOST_UBLAS_INLINE | matrix_indirect (const matrix_closure_type &data, const indirect_array_type &ia1, const indirect_array_type &ia2, int) |
BOOST_UBLAS_INLINE size_type | size1 () const |
BOOST_UBLAS_INLINE size_type | size2 () const |
BOOST_UBLAS_INLINE const indirect_array_type & | indirect1 () const |
BOOST_UBLAS_INLINE indirect_array_type & | indirect1 () |
BOOST_UBLAS_INLINE const indirect_array_type & | indirect2 () const |
BOOST_UBLAS_INLINE indirect_array_type & | indirect2 () |
BOOST_UBLAS_INLINE const matrix_closure_type & | data () const |
BOOST_UBLAS_INLINE matrix_closure_type & | data () |
BOOST_UBLAS_INLINE const_reference | operator() (size_type i, size_type j) const |
BOOST_UBLAS_INLINE reference | operator() (size_type i, size_type j) |
BOOST_UBLAS_INLINE matrix_indirect< matrix_type, indirect_array_type > | project (const range_type &r1, const range_type &r2) const |
BOOST_UBLAS_INLINE matrix_indirect< matrix_type, indirect_array_type > | project (const slice_type &s1, const slice_type &s2) const |
BOOST_UBLAS_INLINE matrix_indirect< matrix_type, indirect_array_type > | project (const indirect_array_type &ia1, const indirect_array_type &ia2) const |
BOOST_UBLAS_INLINE matrix_indirect & | operator= (const matrix_indirect &mi) |
BOOST_UBLAS_INLINE matrix_indirect & | assign_temporary (matrix_indirect &mi) |
template<class AE > | |
BOOST_UBLAS_INLINE matrix_indirect & | operator= (const matrix_expression< AE > &ae) |
template<class AE > | |
BOOST_UBLAS_INLINE matrix_indirect & | assign (const matrix_expression< AE > &ae) |
template<class AE > | |
BOOST_UBLAS_INLINE matrix_indirect & | operator+= (const matrix_expression< AE > &ae) |
template<class AE > | |
BOOST_UBLAS_INLINE matrix_indirect & | plus_assign (const matrix_expression< AE > &ae) |
template<class AE > | |
BOOST_UBLAS_INLINE matrix_indirect & | operator-= (const matrix_expression< AE > &ae) |
template<class AE > | |
BOOST_UBLAS_INLINE matrix_indirect & | minus_assign (const matrix_expression< AE > &ae) |
template<class AT > | |
BOOST_UBLAS_INLINE matrix_indirect & | operator*= (const AT &at) |
template<class AT > | |
BOOST_UBLAS_INLINE matrix_indirect & | operator/= (const AT &at) |
BOOST_UBLAS_INLINE bool | same_closure (const matrix_indirect &mi) const |
BOOST_UBLAS_INLINE bool | operator== (const matrix_indirect &mi) const |
BOOST_UBLAS_INLINE void | swap (matrix_indirect mi) |
BOOST_UBLAS_INLINE const_iterator1 | find1 (int, size_type i, size_type j) const |
BOOST_UBLAS_INLINE iterator1 | find1 (int, size_type i, size_type j) |
BOOST_UBLAS_INLINE const_iterator2 | find2 (int, size_type i, size_type j) const |
BOOST_UBLAS_INLINE iterator2 | find2 (int, size_type i, size_type j) |
BOOST_UBLAS_INLINE const_iterator1 | begin1 () const |
BOOST_UBLAS_INLINE const_iterator1 | cbegin1 () const |
BOOST_UBLAS_INLINE const_iterator1 | end1 () const |
BOOST_UBLAS_INLINE const_iterator1 | cend1 () const |
BOOST_UBLAS_INLINE iterator1 | begin1 () |
BOOST_UBLAS_INLINE iterator1 | end1 () |
BOOST_UBLAS_INLINE const_iterator2 | begin2 () const |
BOOST_UBLAS_INLINE const_iterator2 | cbegin2 () const |
BOOST_UBLAS_INLINE const_iterator2 | end2 () const |
BOOST_UBLAS_INLINE const_iterator2 | cend2 () const |
BOOST_UBLAS_INLINE iterator2 | begin2 () |
BOOST_UBLAS_INLINE iterator2 | end2 () |
BOOST_UBLAS_INLINE const_reverse_iterator1 | rbegin1 () const |
BOOST_UBLAS_INLINE const_reverse_iterator1 | crbegin1 () const |
BOOST_UBLAS_INLINE const_reverse_iterator1 | rend1 () const |
BOOST_UBLAS_INLINE const_reverse_iterator1 | crend1 () const |
BOOST_UBLAS_INLINE reverse_iterator1 | rbegin1 () |
BOOST_UBLAS_INLINE reverse_iterator1 | rend1 () |
BOOST_UBLAS_INLINE const_reverse_iterator2 | rbegin2 () const |
BOOST_UBLAS_INLINE const_reverse_iterator2 | crbegin2 () const |
BOOST_UBLAS_INLINE const_reverse_iterator2 | rend2 () const |
BOOST_UBLAS_INLINE const_reverse_iterator2 | crend2 () const |
BOOST_UBLAS_INLINE reverse_iterator2 | rbegin2 () |
BOOST_UBLAS_INLINE reverse_iterator2 | rend2 () |
BOOST_UBLAS_INLINE const expression_type & | operator() () const |
BOOST_UBLAS_INLINE expression_type & | operator() () |
Static Public Attributes | |
static const unsigned | complexity |
Friends | |
BOOST_UBLAS_INLINE friend void | swap (matrix_indirect mi1, matrix_indirect mi2) |
A matrix referencing a non continuous submatrix of elements given another matrix of indices.
It is the most general version of any submatrices because it uses another matrix of indices to reference the submatrix.
The matrix of indices can be of any type with the restriction that its elements must be type-compatible with the size_type of
the container. In practice, the following are good candidates:
boost::numeric::ublas::indirect_array<A>
where A
can be int
, size_t
, long
, etc...boost::numeric::ublas::matrix<int>
can work too (int
can be replaced by another integer type)An indirect matrix can be used as a normal matrix in any expression. If the specified indirect matrix falls outside that of the indices of the matrix, then the matrix_indirect
is not a well formed Matrix Expression and access to an element outside of indices of the matrix is undefined.
V | the type of the referenced matrix, for example matrix<double> ) |
IA | the type of index matrix. Default is ublas::indirect_array<> |
typedef self_type boost::numeric::ublas::matrix_indirect< M, IA >::closure_type |
typedef const self_type boost::numeric::ublas::matrix_indirect< M, IA >::const_closure_type |
typedef M::const_reference boost::numeric::ublas::matrix_indirect< M, IA >::const_reference |
typedef reverse_iterator_base1<const_iterator1> boost::numeric::ublas::matrix_indirect< M, IA >::const_reverse_iterator1 |
typedef reverse_iterator_base2<const_iterator2> boost::numeric::ublas::matrix_indirect< M, IA >::const_reverse_iterator2 |
typedef M::difference_type boost::numeric::ublas::matrix_indirect< M, IA >::difference_type |
|
inherited |
typedef IA boost::numeric::ublas::matrix_indirect< M, IA >::indirect_array_type |
typedef boost::mpl::if_<boost::is_const<M>, typename M::const_closure_type, typename M::closure_type>::type boost::numeric::ublas::matrix_indirect< M, IA >::matrix_closure_type |
typedef M boost::numeric::ublas::matrix_indirect< M, IA >::matrix_type |
typedef M::orientation_category boost::numeric::ublas::matrix_indirect< M, IA >::orientation_category |
typedef basic_range<size_type, difference_type> boost::numeric::ublas::matrix_indirect< M, IA >::range_type |
typedef boost::mpl::if_<boost::is_const<M>, typename M::const_reference, typename M::reference>::type boost::numeric::ublas::matrix_indirect< M, IA >::reference |
typedef reverse_iterator_base1<iterator1> boost::numeric::ublas::matrix_indirect< M, IA >::reverse_iterator1 |
typedef reverse_iterator_base2<iterator2> boost::numeric::ublas::matrix_indirect< M, IA >::reverse_iterator2 |
typedef M::size_type boost::numeric::ublas::matrix_indirect< M, IA >::size_type |
typedef basic_slice<size_type, difference_type> boost::numeric::ublas::matrix_indirect< M, IA >::slice_type |
typedef storage_restrict_traits<typename M::storage_category, dense_proxy_tag>::storage_category boost::numeric::ublas::matrix_indirect< M, IA >::storage_category |
|
inherited |
typedef M::value_type boost::numeric::ublas::matrix_indirect< M, IA >::value_type |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
References boost::multiprecision::backends::i.
|
inline |
|
inline |
References boost::multiprecision::backends::i.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineinherited |
|
inlineinherited |
|
inline |
|
inline |
|
inline |
References boost::xpressive::at.
|
inline |
References boost::detail::type.
|
inline |
References boost::detail::type.
|
inline |
References boost::xpressive::at.
|
inline |
|
inline |
References boost::detail::type.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Referenced by boost::numeric::ublas::matrix_indirect< M, IA >::const_iterator1::operator-(), boost::numeric::ublas::matrix_indirect< M, IA >::iterator1::operator-(), boost::numeric::ublas::matrix_indirect< M, IA >::const_iterator2::operator-(), boost::numeric::ublas::matrix_indirect< M, IA >::iterator2::operator-(), boost::numeric::ublas::matrix_indirect< M, IA >::const_iterator1::operator<(), boost::numeric::ublas::matrix_indirect< M, IA >::iterator1::operator<(), boost::numeric::ublas::matrix_indirect< M, IA >::const_iterator2::operator<(), boost::numeric::ublas::matrix_indirect< M, IA >::iterator2::operator<(), boost::numeric::ublas::matrix_indirect< M, IA >::const_iterator1::operator==(), boost::numeric::ublas::matrix_indirect< M, IA >::iterator1::operator==(), boost::numeric::ublas::matrix_indirect< M, IA >::const_iterator2::operator==(), and boost::numeric::ublas::matrix_indirect< M, IA >::iterator2::operator==().
|
inline |
|
inline |
|
inline |
|
friend |
|
staticinherited |