请编写并测试一个稀疏矩阵相乘的函数
matrix sparse_matrix_mul(const matrix& m1, constmatrix& m2)
其中matrix为一个描述稀疏矩阵的结构体:
struct matrix
{
float* _elements; //矩阵中所有元素的数组(按列优先的顺序)
int* _colheads; //每列的开始元素在_elements数组中的id
int* _colids; //_elements中每个元素在对应列中的行号
int _rows; //行数
int _cols; //列数
};
例如矩阵
0 1 0
2 4 5
3 0 0
对应结构中各数组为
_elements:{2,3,1,4,5}
_colheads:{0,2,4}
_colids:{1,2,0,1,1}.
请提交一个完整的可编译的程序和测试数据。
提示:请尽可能优化代码的时空间效率,并处理异常情况。