要實現C++中的矩陣(matrix)數據結構,可以先定義一個模板類來表示矩陣,然后為該類添加適當的方法和操作符重載來實現矩陣的各種操作。下面是一個簡單的示例代碼,演示了如何實現一個包含自定義類型的矩陣類:
#include <iostream>
#include <vector>
template <typename T>
class Matrix {
private:
std::vector<std::vector<T>> data;
int rows, cols;
public:
Matrix(int rows, int cols) : rows(rows), cols(cols) {
data.resize(rows, std::vector<T>(cols));
}
std::vector<T>& operator[](int i) {
return data[i];
}
friend std::ostream& operator<<(std::ostream& os, const Matrix<T>& m) {
for (int i = 0; i < m.rows; i++) {
for (int j = 0; j < m.cols; j++) {
os << m.data[i][j] << " ";
}
os << std::endl;
}
return os;
}
};
// 自定義類型
struct Point {
int x, y;
Point(int x, int y) : x(x), y(y) {}
};
int main() {
Matrix<Point> mat(2, 2);
mat[0][0] = Point(1, 2);
mat[0][1] = Point(3, 4);
mat[1][0] = Point(5, 6);
mat[1][1] = Point(7, 8);
std::cout << mat;
return 0;
}
在上面的示例中,我們定義了一個模板類Matrix,使用std::vector<std::vector
通過這種方式,我們可以實現一個支持自定義類型的矩陣類,并進行相應的操作。您可以根據實際需求對這個示例代碼進行擴展和修改。