В boost::numeric::ublas
существует три разреженных векторных типа .
Я могу видеть, что mapped_vector
по сути является stl::map
от индекса к значению, который учитывает все ненайденные значения равны 0 (или какому-либо общему значению).
Но документация скудна (ха-ха) относительно информации о compressed_vector
и coordinate_vector
.
Может ли кто-нибудьуточнить?Я пытаюсь выяснить алгоритмическую сложность добавления элементов в различные векторы, а также точечных произведений между двумя такими векторами.
Очень полезный ответ, предлагаемый, что сжатый_вектор очень похож на сжатый_матрикс .Но, например, сжатое хранилище строк предназначено только для хранения матриц, а не только векторов.
Я вижу, что unbounded_array
- это тип хранения, но я неЯ уверен, что спецификация для этого тоже.Если я создаю сжатый_вектор размером 200 000 000, но только с 5 ненулевыми местоположениями, разве это менее эффективно, чем создание сжатого_вектора с размером 10 и 5 ненулевыми местоположениями?
Большое спасибо!