表示稀疏张量的数据结构?

dzh*_*lil 6 c++ sparse-array

在 C++ 中表示稀疏张量的合适数据结构是什么?我想到的第一个选项是 a,boost::unordered_map因为它允许快速设置和检索 an 元素等操作,如下所示:

A(i,j,k,l) = 5
Run Code Online (Sandbox Code Playgroud)

但是,我还希望能够对单个索引进行收缩,这将涉及对其中一个索引进行求和

C(i,j,k,m) = A(i,j,k,l)*B(l,m)
Run Code Online (Sandbox Code Playgroud)

使用 来实现这个运算符有多容易boost::unordered_map?有没有更合适的数据结构?

Sco*_*ord 0

有可用的张量库,例如:

http://www.codeproject.com/KB/recipes/tensor.aspx
Run Code Online (Sandbox Code Playgroud)

http://cadadr.org/fm/package/ftensor.html
Run Code Online (Sandbox Code Playgroud)

这些有什么问题吗?与使用地图相比,您会获得更多的张量运算。