Data structure for representing sparse tensor?
What is an appropriate data structure to represent a sparse tesnor in C++? The first option that comes to mind is a boost::unordered_map since it allows operations like fast setting and retrieval of an an element like below: A(i,j,k,l) = 5 However, I would also like to be able to do contractions over a single index, which would involve summation over one of the indices C(i,j,k,m) = A(i,j,k,l)*B(l,m) How easy would it be to implement this operator with a boost::unordered_map ? Is there a more appropriate data structure? There are tensor libraries available, like: http://www.codeproject.com/KB