我目前正在开发一种算法,需要在矩阵中找到所有相等的项目。我决定使用来自boost的uBLAS矩阵。所以我的问题是:
我有一个ublas :: matrix看起来像:
1 2 3 4 5
2 4 6 8 1
1 5 4 6 8
9 4 6 7 0
我希望找到所有位置(x,y),即值6。 是否有功能?
答案 0 :(得分:1)
没有特定于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;
}