[,] m_elementBuffer;
}
实现方式简单直观,但是对于稀疏矩阵而言,空间上的浪费比较严重,所以可以考虑以不同的方式来存储稀疏矩阵的各个元素....一种可能的实现方式是将元素的数值和位置一起抽象为单独的类型:
// C#
public struct ElementData
{
uint row, col;
ElementType val;
};...但是如何存储上述的 ElementData 仍然存在问题,简单使用列表存储会导致元素访问速度由之前的O(1)变为O(m)(m为稀疏矩阵中的非0元素个数),使用字典存储应该是一种优化方案,但是同样存在元素节点负载较大的问题...这里尝试使用字典存储方式实现一下稀疏矩阵,考虑到需要提供字典键,我们可以将元素的位置信息通过一一映射的方式转换为键值(这里采用简单的拼接方式,细节见源码),同样是因为一一映射的缘故,通过键值我们也可以获得元素的位置信息...本以为相关实现应该比较简单,但整个过程却颇多意外,这里简单记下~
C#的泛型限制
由于矩阵的元素类型不定,使用泛型实现应该是比较合理的选择,代码大概如此:
// C#
public class Matrix