如何在ublas::矩阵中查找项目的所有出现项

How to find all occurrences of an item in a ublas::matrix

本文关键字:项目 ublas 查找      更新时间:2023-10-16

我目前正在研究一种算法,该算法需要找到矩阵中某个项的所有相等出现次数。我决定使用boost中的uBLAS矩阵。所以我的问题是:

我有一个ublas::矩阵,看起来像:

1 2 3 4 5
2 4 6 8 1
1 5 4 6 8
9 4 6 7 0

并且我想要找到值6的所有位置(x。有的函数吗?

没有特定于ublas的函数(据我所知),您必须以通常的方式扫描矩阵——通过迭代器或索引访问:

typedef std::vector<std::pair<size_t, size_t> > posvec_t;
template <typename T>
posvec_t find_all(const ublas::matrix<T>& m, T val)
{
    posvec_t ret;
    for(size_t r=0; r<m.size1(); ++r)
       for(size_t c=0; c<m.size2(); ++c)
           if(m(r,c) == val)
               ret.push_back( std::make_pair(r, c) );
    return ret;
}

测试:https://ideone.com/qhW9b