2011-06-29 10 views
0

現在、行列内のすべての等しい出現を見つける必要があるアルゴリズムに取り組んでいます。私はブーストからuBLASマトリックスを使用することに決めました。だから、私の問題は、次のとおりです。ublas :: matrix内のアイテムのすべての出現を見つける方法

私はublasを持っている::行列は次のように探して:

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

と私は値6 がする機能があり、すなわち、すべての位置(x、y)を見つけたいです?

答えて

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; 
} 

テスト:https://ideone.com/qhW9b

関連する問題