boost sparse matrix 提供了两个只访问非零元素的iterator
typedef boost::numeric::ublas::compressed_matrix<float>::iterator1 it1_t;
typedef boost::numeric::ublas::compressed_matrix<float>::const_iterator1 it1_t2;
typedef boost::numeric::ublas::compressed_matrix<float>::iterator2 it2_t;
typedef boost::numeric::ublas::compressed_matrix<float>::const_iterator2 it2_t2;
namespace nub = boost::numeric::ublas;
其中,const_* 迭代器用在sparse matrix是const类型的时候,和iterator*一样,只是不能修改sparse matrix里的元素值。
it1_t是sparse matrix的row的迭代器,it2_t是sparse matrix的column的迭代器
nub::compressed_matrix<float> test;
for(it1_t it1 = test.begin1(); it1 != test.end1(): it1++) // row
for(it2_t it2 = it1.begin(); it2 != it1.end(); it2++) // column
{
cout<<it2.index1()<<" "<<it2.index2()<<*it2<<endl;
}