В отличие от SparseMatrix, этот класс обеспечивает гораздо большую гибкость. В частности, он позволяет случайный доступ для чтения/записи за логарифмическое время от rho*outer_size, где rho — вероятность того, что коэффициент отличен от нуля, а outer_size — число столбцов, если матрица является столбце-главной, и число строк в противном случае.
Внутренне данные хранятся как std::vector сжатых векторов. Производительность случайных записей может снижаться по мере увеличения количества ненулевых элементов в каждом внутреннем векторе. На практике мы наблюдали очень хорошую производительность до примерно 100 ненулевых элементов на вектор, и производительность остаётся относительно хорошей до 500 ненулевых элементов на вектор.
ссылку на значение коэффициента в заданной позиции row, col. Эта операция включает двоичный поиск log(rho*outer_size). Если коэффициент ещё не существует, выполняется сортированная вставка в последовательный буфер.
endFill()
шаблон<typename _Scalar , int _Options, typename _StorageIndex >
используйте insert() вставляет коэффициент, отличный от нуля, в заданные координаты row, col и возвращает ссылку на него, предполагая, что: 1 - коэффициент ещё не существует 2 - это коэффициент с большей внутренней координатой для данной внешней координаты. Другими словами, предполагая *this — это порядок следования столбцов, тогда не должно существовать никакого коэффициента, отличного от нуля, с координатами ixcol, такое что i >= row. В противном случае матрица некорректна.
используйте insert() Как fill(), но с случайными внутренними координатами. По сравнению с универсальной функцией coeffRef(), единственное ограничение заключается в том, что мы предполагаем, что коэффициент ещё не существует.
finalize()
шаблон<typename _Scalar , int _Options, typename _StorageIndex >