溫馨提示×

C++中如何自定義矩陣類模板

c++
小樊
91
2024-08-29 22:25:31
欄目: 編程語言

在C++中,你可以通過創(chuàng)建一個類模板來實現(xiàn)自定義矩陣類。以下是一個簡單的示例:

#include<iostream>
#include<vector>

template<typename T>
class Matrix {
public:
    // 構(gòu)造函數(shù)
    Matrix(int rows, int cols) : rows_(rows), cols_(cols) {
        data_.resize(rows);
        for (int i = 0; i< rows; ++i) {
            data_[i].resize(cols);
        }
    }

    // 獲取矩陣的行數(shù)
    int rows() const {
        return rows_;
    }

    // 獲取矩陣的列數(shù)
    int cols() const {
        return cols_;
    }

    // 獲取矩陣中指定位置的元素
    T& operator()(int row, int col) {
        return data_[row][col];
    }

    // 獲取矩陣中指定位置的元素(常量版本)
    const T& operator()(int row, int col) const {
        return data_[row][col];
    }

private:
    int rows_;
    int cols_;
    std::vector<std::vector<T>> data_;
};

int main() {
    // 創(chuàng)建一個3x3的整數(shù)矩陣
    Matrix<int> mat(3, 3);

    // 初始化矩陣
    for (int i = 0; i < mat.rows(); ++i) {
        for (int j = 0; j < mat.cols(); ++j) {
            mat(i, j) = i * j;
        }
    }

    // 輸出矩陣
    for (int i = 0; i < mat.rows(); ++i) {
        for (int j = 0; j < mat.cols(); ++j) {
            std::cout<< mat(i, j) << " ";
        }
        std::cout<< std::endl;
    }

    return 0;
}

這個示例中,我們創(chuàng)建了一個名為Matrix的類模板,它接受一個類型參數(shù)T。這個類模板包含一個二維向量data_,用于存儲矩陣的數(shù)據(jù)。我們還提供了一些成員函數(shù),如rows()、cols()operator(),以方便地訪問和操作矩陣的元素。

main()函數(shù)中,我們創(chuàng)建了一個3x3的整數(shù)矩陣,并使用嵌套循環(huán)初始化和輸出它。你可以根據(jù)需要修改這個類模板,以添加更多的功能和操作。

0