Как найти все вхождения элемента в ublas :: matrix - PullRequest
0 голосов
/ 29 июня 2011

В настоящее время я работаю над алгоритмом, который должен найти все равные вхождения для элемента в матрице.Я решил использовать матрицы uBLAS от boost.Итак, моя проблема:

У меня есть 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. Есть лифункция для?

1 Ответ

1 голос
/ 29 июня 2011

Нет функции, специфичной для 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;
}

test: https://ideone.com/qhW9b

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...