Какова подходящая структура данных для представления разреженного теснора в C ++?Первый вариант, который приходит на ум, - boost::unordered_map
, поскольку он позволяет выполнять такие операции, как быстрая установка и извлечение элемента, как показано ниже:
A(i,j,k,l) = 5
Однако я также хотел бы иметь возможность сокращатьодин индекс, который будет включать суммирование по одному из индексов
C(i,j,k,m) = A(i,j,k,l)*B(l,m)
Насколько легко было бы реализовать этот оператор с boost::unordered_map
?Есть ли более подходящая структура данных?