Hi,
I am relatively new to Boost and I find it an excellent C++ library.
During my experiments with the library, I tried the sparse matrix
classes offered by uBLAS. Unfortunately, I think that reverse_iterators
of these classes do not work correctly. Below is my sample code, which
demonstrates some problems; the problems are the same with all three
sparse matrix classes. I tried it with gcc 3.4.1 on Linux.
Any comments would be appreciated.
Thanks in advance,
Nikos Platis
PS. I post here instead of the uBLAS Yahoo Group because I am still
waiting for membership approval...
----------------------------------------------------
#include <iostream>
#include
#include
namespace ublas = boost::numeric::ublas;
//typedef ublas::sparse_matrix<double> spmd;
//typedef ublas::compressed_matrix<double> spmd;
typedef ublas::coordinate_matrix<double> spmd;
int main()
{
// Construct a sample sparse matrix
spmd M(5, 5);
M(0,0) = 11; M(0,2) = 13;
M(1,0) = 21; M(1,1) = 22;
M(2,2) = 33; M(2,4) = 35;
M(3,3) = 44;
M(4,0) = 52; M(4,4) = 55;
/* OK */
for (spmd::const_iterator1 it1 = M.begin1(); it1 != M.end1(); ++it1) {
for (spmd::const_iterator2 it2 = it1.begin(); it2 != it1.end();
++it2) {
std::cout << it2.index1() << " " << it2.index2() << ": " <<
*it2 << std::endl;
}
}
std::cout << std::endl << std::endl;
/* The following does not compile, error about the const reverse iterators
for (spmd::const_reverse_iterator1 it1 = M.rbegin1(); it1 !=
M.rend1(); ++it1) {
for (spmd::const_reverse_iterator2 it2 = it1.rbegin(); it2 !=
it1.rend(); ++it2) {
std::cout << it2.index1() << " " << it2.index2() << ": " <<
*it2 << std::endl;
}
}
std::cout << std::endl << std::endl;
*/
/* The following compiles but throws bad_index exception */
for (spmd::reverse_iterator1 it1 = M.rbegin1(); it1 != M.rend1();
++it1) {
for (spmd::reverse_iterator2 it2 = it1.rbegin(); it2 !=
it1.rend(); ++it2) {
std::cout << it2.index1() << " " << it2.index2() << ": " <<
*it2 << std::endl;
}
}
std::cout << std::endl << std::endl;
}
----------------------------------------------------
--
-----------------------------------------------------------------------
Nikos Platis e-mail: nplatis@di.uoa.gr
Department of Informatics tel: +30 210-727-5106
University of Athens fax: +30 210-727-5114
"The empires of the future are the empires of the mind." - W. Churchill
-----------------------------------------------------------------------