如何在C++中创建动态数组来存储矩阵?
时间: 2024-09-22 22:04:59 浏览: 36
在C++中,你可以使用`std::vector`或`dynamic_array`(如果使用C++17或更高版本)来动态地创建和管理矩阵。`std::vector`更通用,而`dynamic_array`提供了更快的内存访问速度。
**1. 使用`std::vector`创建动态矩阵:**
```cpp
#include <vector>
class Matrix {
public:
int rows;
int cols;
// 创建一个空矩阵
Matrix(int r, int c) : rows(r), cols(c) { data.resize(rows * cols); }
// 添加元素
void set(int i, int j, int value) {
if (i >= 0 && i < rows && j >= 0 && j < cols)
data[i * cols + j] = value;
}
// 访问元素
int get(int i, int j) const {
if (i >= 0 && i < rows && j >= 0 && j < cols)
return data[i * cols + j];
else
throw std::out_of_range("Index out of range");
}
private:
std::vector<int> data; // 存储矩阵的动态数组
};
```
**2. 如果支持C++17,使用`std::array`和`std::span`:**
```cpp
#include <array>
#include <span>
class DynamicArrayMatrix {
public:
std::array<std::array<int, COLS>, ROWS> data;
DynamicArrayMatrix(int rows, int cols) : rows(rows), cols(cols) {}
void set(int i, int j, int value) {
if (i >= 0 && i < rows && j >= 0 && j < cols)
data[i][j] = value;
}
int get(int i, int j) const {
if (i >= 0 && i < rows && j >= 0 && j < cols)
return data[i][j];
else
throw std::out_of_range("Index out of range");
}
private:
static constexpr int ROWS = ...;
static constexpr int COLS = ...;
};
```
**
阅读全文