2
0
mirror of https://github.com/boostorg/ublas.git synced 2026-02-21 03:22:14 +00:00

sparse_vector_of_sparse_vector compiles

svn path=/trunk/boost/boost/numeric/ublas/; revision=24939
This commit is contained in:
Michael Stevens
2004-09-06 12:42:16 +00:00
parent f50427fa40
commit c19738ce34

View File

@@ -1555,7 +1555,7 @@ namespace boost { namespace numeric { namespace ublas {
if (itv == data ().end ())
itv = data ().insert (data ().end (), BOOST_UBLAS_TYPENAME array_type::value_type (functor_type::element1 (i, size1_, j, size2_), vector_data_value_type ()));
BOOST_UBLAS_CHECK ((*itv).second.find (functor_type::element2 (i, size1_, j, size2_)) == (*itv).second.end (), bad_index ());
(*itv).second.insert ((*itv).second.end (), BOOST_UBLAS_TYPENAME array_type::value_type (functor_type::element2 (i, size1_, j, size2_), t));
(*itv).second.insert ((*itv).second.end (), BOOST_UBLAS_TYPENAME array_type::value_type::second_type::value_type (functor_type::element2 (i, size1_, j, size2_), t));
}
BOOST_UBLAS_INLINE
void erase (size_type i, size_type j) {
@@ -1613,13 +1613,13 @@ namespace boost { namespace numeric { namespace ublas {
const_iterator_type it_end ((*itv).second.end ());
if (rank == 0)
return const_iterator1 (*this, rank, i, j, itv, it);
if (it != it_end && *it == functor_type::address2 (i, size1_, j, size2_))
if (it != it_end && (*it).first == functor_type::address2 (i, size1_, j, size2_))
return const_iterator1 (*this, rank, i, j, itv, it);
if (direction > 0) {
if (functor_type::fast1 ()) {
if (it == it_end)
return const_iterator1 (*this, rank, i, j, itv, it);
i = *it;
i = (*it).first;
} else {
if (i >= size1_)
return const_iterator1 (*this, rank, i, j, itv, it);
@@ -1629,7 +1629,8 @@ namespace boost { namespace numeric { namespace ublas {
if (functor_type::fast1 ()) {
if (it == (*itv).second.begin ())
return const_iterator1 (*this, rank, i, j, itv, it);
i = *(it - 1);
-- it;
i = (*it).first;
} else {
if (i == 0)
return const_iterator1 (*this, rank, i, j, itv, it);
@@ -1652,13 +1653,13 @@ namespace boost { namespace numeric { namespace ublas {
iterator_type it_end ((*itv).second.end ());
if (rank == 0)
return iterator1 (*this, rank, i, j, itv, it);
if (it != it_end && *it == functor_type::address2 (i, size1_, j, size2_))
if (it != it_end && (*it).first == functor_type::address2 (i, size1_, j, size2_))
return iterator1 (*this, rank, i, j, itv, it);
if (direction > 0) {
if (functor_type::fast1 ()) {
if (it == it_end)
return iterator1 (*this, rank, i, j, itv, it);
i = *it;
i = (*it).first;
} else {
if (i >= size1_)
return iterator1 (*this, rank, i, j, itv, it);
@@ -1668,7 +1669,8 @@ namespace boost { namespace numeric { namespace ublas {
if (functor_type::fast1 ()) {
if (it == (*itv).second.begin ())
return iterator1 (*this, rank, i, j, itv, it);
i = *(it - 1);
-- it;
i = (*it).first;
} else {
if (i == 0)
return iterator1 (*this, rank, i, j, itv, it);
@@ -1691,13 +1693,13 @@ namespace boost { namespace numeric { namespace ublas {
const_iterator_type it_end ((*itv).second.end ());
if (rank == 0)
return const_iterator2 (*this, rank, i, j, itv, it);
if (it != it_end && *it == functor_type::address2 (i, size1_, j, size2_))
if (it != it_end && (*it).first == functor_type::address2 (i, size1_, j, size2_))
return const_iterator2 (*this, rank, i, j, itv, it);
if (direction > 0) {
if (functor_type::fast2 ()) {
if (it == it_end)
return const_iterator2 (*this, rank, i, j, itv, it);
j = *it;
j = (*it).first;
} else {
if (j >= size2_)
return const_iterator2 (*this, rank, i, j, itv, it);
@@ -1707,7 +1709,8 @@ namespace boost { namespace numeric { namespace ublas {
if (functor_type::fast2 ()) {
if (it == (*itv).second.begin ())
return const_iterator2 (*this, rank, i, j, itv, it);
j = *(it - 1);
-- it;
j = (*it).first;
} else {
if (j == 0)
return const_iterator2 (*this, rank, i, j, itv, it);
@@ -1730,13 +1733,13 @@ namespace boost { namespace numeric { namespace ublas {
iterator_type it_end ((*itv).second.end ());
if (rank == 0)
return iterator2 (*this, rank, i, j, itv, it);
if (it != it_end && *it == functor_type::address2 (i, size1_, j, size2_))
if (it != it_end && (*it).first == functor_type::address2 (i, size1_, j, size2_))
return iterator2 (*this, rank, i, j, itv, it);
if (direction > 0) {
if (functor_type::fast2 ()) {
if (it == it_end)
return iterator2 (*this, rank, i, j, itv, it);
j = *it;
j = (*it).first;
} else {
if (j >= size2_)
return iterator2 (*this, rank, i, j, itv, it);
@@ -1746,7 +1749,8 @@ namespace boost { namespace numeric { namespace ublas {
if (functor_type::fast2 ()) {
if (it == (*itv).second.begin ())
return iterator2 (*this, rank, i, j, itv, it);
j = *(it - 1);
-- it;
j = (*it).first;
} else {
if (j == 0)
return iterator2 (*this, rank, i, j, itv, it);