例えば以下の対角行列でm(0, 0), m(1, 1), m(2, 2), m(3, 3)のみを取得したいです。
要素の取得時に、その要素の行数と列数も取得したい場合はどうすればいいのでしょうか。

boost::numeric::ublas::compressed_matrix<double> m(4, 4);
m(0, 0) = 1;
m(1, 1) = 2;
m(2, 2) = 3;
m(3, 3) = 4;
for(auto i = m.begin1(); i != m.end1(); ++i){
    std::cout << *i << std::endl;
}

処理時間の無駄だと思うので、次の様な全ての要素をiterateする実装は避けたいです。

for(int i = 0; i < m.size1(); ++i){
    for(int j = 0; j < m.size2(); ++j){
        if(m(j, i) == 0){ continue; }
        std::cout << m(j, i) << std::endl;
    }
}