在 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?有没有更合适的数据结构?
有可用的张量库,例如:
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)
这些有什么问题吗?与使用地图相比,您会获得更多的张量运算。