

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

[code]

    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;
    }
    
[/code]

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

[code]

    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;
        }
    }
    
[/code]


CC BY-SA 3.0
2015-10-17T11:49:47.703
17755
2015-10-17T11:49:47.703
12825
question
c++ boost
Boost.ublasのcompressed_matrixで存在する要素の行数と列数を得ながら全てiterateしたい