随机稀疏矩阵的压缩存储方法的C++代码
时间: 2024-12-23 18:27:51 浏览: 53
在C++中,随机稀疏矩阵通常采用Compressed Sparse Row (CSR) 或 Compressed Sparse Column (CSC) 这样的压缩存储格式,因为它们能有效减少存储空间,特别是当矩阵大部分元素为零时。下面是一个简单的CSR格式的例子:
```cpp
// 定义一个Node结构,表示非零元素
struct Node {
int value; // 元素值
int row; // 行索引
int col; // 列索引
};
// 使用vector存储行指针、列索引和值
class CSRMatrix {
public:
vector<int> row_ptr; // 行开始位置
vector<int> cols; // 每一行的列索引
vector<Node> values; // 具有实际值的节点
// 添加非零元素到矩阵
void add(int row, int col, int val) {
Node node = {val, row, col};
values.push_back(node);
cols[row]++;
}
// 访问元素
int get(int i, int j) const {
int index = findIndex(row_ptr, i, j); // 找到元素在values中的索引
if (index != -1) return values[index].value;
else return 0; // 如果找不到,返回0
}
private:
// 查找给定行中指定列的位置
int findIndex(const vector<int>& row_ptr, int r, int c) const {
for (int k = row_ptr[r]; k < row_ptr[r + 1]; ++k)
if (cols[k] == c) return k;
return -1; // 如果不存在,返回-1
}
};
```
阅读全文