帮我用C加加语言完成一个稀疏矩阵求和的代码
时间: 2024-10-10 11:08:56 浏览: 48
在C++中,稀疏矩阵通常不会像常规二维数组那样存储所有的元素,而是通过一个动态的数据结构如std::vector
、std::unordered_map
等来保存非零元素及其对应的行和列索引。这里是一个简单的例子,展示如何使用std::map
来实现稀疏矩阵的求和:
#include <iostream>
#include <map>
// 定义稀疏矩阵的结点
struct SparseMatrixNode {
int value; // 非零值
int row; // 行索引
int col; // 列索引
};
// 稀疏矩阵类
class SparseMatrix {
private:
std::map<std::pair<int, int>, int> elements; // 存储非零元素
public:
void add(int row, int col, int value) {
elements[{row, col}] = value;
}
int sum() {
int total = 0;
for (const auto& pair : elements) {
total += pair.second; // 求和
}
return total;
}
};
int main() {
SparseMatrix sparseMat;
// 添加稀疏矩阵的元素
sparseMat.add(0, 0, 5);
sparseMat.add(1, 2, 3);
sparseMat.add(2, 1, 7);
int result = sparseMat.sum();
std::cout << "The sum of the sparse matrix is: " << result << std::endl;
return 0;
}
在这个示例中,我们首先创建了一个SparseMatrix
类,它有一个私有的elements
映射表用于存储元素。然后,我们可以添加元素到矩阵,并通过sum()
函数计算所有非零元素的总和。
相关推荐


















