Доступ к индексам ненулевых элементов в разреженном векторе UBLAS - PullRequest
2 голосов
/ 21 сентября 2011

Как узнать индекс первого ненулевого элемента в sparse_vector в ublas и каждого последующего ненулевого элемента? Функция begin () дает мне итератор, который можно использовать для определения первого ненулевого сохраненного значения, а не его индекса в векторе.

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Вот ответ, после Освин Краузе, из главного списка ублаков:

Итераторы предлагают метод index (), который возвращает желаемый результат. Но помните, что только const_iterator действительно редок!

для (SparseVector :: const_iterator pos = sparseVec.begin (); pos! = sparseVec.end (); ++ pos) {std :: cout << pos.index () << "" << * pos; } </p>

0 голосов
/ 21 сентября 2011

Это кажется невозможным без линейного сканирования по вектору. API просто не предоставляет ненулевые индексы. (Я бы написал авторам на вашем месте, так как они скрывают информацию, которая может быть очень полезна при сериализации разреженных векторов.)

В прошлом у меня были похожие проблемы с разреженными матрицами UBLAS, что в итоге заставило меня свернуть свои собственные.

...