boost::numeric::ublas::matrixのiterator

boostのublas::matrixにはbegin1とbegin2のiteratorがある。 どういうものか記載がなかったのでメモ。

答えは、行列の1行目と1列目のitetator

    namespace ublas = boost::numeric::ublas;
    ublas::matrix<double> m(3, 3);
    m(0, 0) = 0.0; m(0, 1) = 1.0; m(0, 2) = 2.0;
    m(1, 0) = 3.0; m(1, 1) = 4.0; m(1, 2) = 5.0;
    m(2, 0) = 6.0; m(2, 1) = 7.0; m(2, 2) = 8.0;

    for (auto e = m.begin1(); e != m.end1(); ++e) {
        std::cout << *e << std::endl;
    }
    //0
    //3
    //6

    for (auto e = m.begin2(); e != m.end2(); ++e) {
        std::cout << *e << std::endl;
    }
    //0
    //1
    //2

    for (auto e = m.rbegin1(); e != m.rend1(); ++e) {
        std::cout << *e << std::endl;
    }
    //6
    //3
    //0

    for (auto e = m.rbegin2(); e != m.rend2(); ++e) {
        std::cout << *e << std::endl;
    }
    //2
    //1
    //0