C++程序 矩阵边界元素

C++程序 矩阵边界元素

在矩阵中,边界元素通常是指位于矩阵的第一行、最后一行、第一列或最后一列的元素,这些元素有很多应用场景,例如在图像处理中,边界元素通常需要被特殊处理。

本文将带大家通过示例代码学习如何在C++中获取矩阵的边界元素,并对其进行相关操作。

示例代码

为了方便起见,我们先定义一个二维矩阵类,并实现获取矩阵边界元素的方法。

#include <iostream>
#include <vector>

class Matrix {
public:
    Matrix(int row, int col) : row(row), col(col) {
        data = std::vector<std::vector<int>>(row, std::vector<int>(col));
    }

    int& operator() (int i, int j) {
        return data[i][j];
    }

    int get(int i, int j) const {
        return data[i][j];
    }

    int getRow() const {
        return row;
    }

    int getCol() const {
        return col;
    }

    std::vector<int> getTopBorder() const;
    std::vector<int> getBottomBorder() const;
    std::vector<int> getLeftBorder() const;
    std::vector<int> getRightBorder() const;

private:
    int row, col;
    std::vector<std::vector<int>> data;
};

std::vector<int> Matrix::getTopBorder() const {
    std::vector<int> res;
    for (int j = 0; j < col; ++j) {
        res.push_back(get(0, j));
    }
    return res;
}

std::vector<int> Matrix::getBottomBorder() const {
    std::vector<int> res;
    for (int j = 0; j < col; ++j) {
        res.push_back(get(row - 1, j));
    }
    return res;
}

std::vector<int> Matrix::getLeftBorder() const {
    std::vector<int> res;
    for (int i = 0; i < row; ++i) {
        res.push_back(get(i, 0));
    }
    return res;
}

std::vector<int> Matrix::getRightBorder() const {
    std::vector<int> res;
    for (int i = 0; i < row; ++i) {
        res.push_back(get(i, col - 1));
    }
    return res;
}

以上代码实现了一个矩阵类Matrix,其中包含了矩阵的操作方法.get().operator(),以及获取矩阵边界元素的方法.getTopBorder().getBottomBorder().getLeftBorder().getRightBorder()

接下来,我们编写一段测试代码,测试矩阵类的边界元素操作方法是否正确。

int main() {
    Matrix mat(3, 4);
    int val = 1;
    for (int i = 0; i < mat.getRow(); ++i) {
        for (int j = 0; j < mat.getCol(); ++j) {
            mat(i, j) = val++;
        }
    }

    std::vector<int> top = mat.getTopBorder();
    std::vector<int> bottom = mat.getBottomBorder();
    std::vector<int> left = mat.getLeftBorder();
    std::vector<int> right = mat.getRightBorder();

    std::cout << "Top border: ";
    for (const auto& e : top) {
        std::cout << e << " ";
    }
    std::cout << std::endl;

    std::cout << "Bottom border: ";
    for (const auto& e : bottom) {
        std::cout << e << " ";
    }
    std::cout << std::endl;

    std::cout << "Left border: ";
    for (const auto& e : left) {
        std::cout << e << " ";
    }
    std::cout << std::endl;

    std::cout << "Right border: ";
    for (const auto& e : right) {
        std::cout << e << " ";
    }
    std::cout << std::endl;

    return 0;
}

上述测试代码中,我们首先创建了一个3×4的矩阵,然后通过循环将矩阵中的元素赋值为1-12。

接下来,我们获取了矩阵的四条边界,使用循环输出每个边界的元素。运行程序,控制台输出如下:

Top border: 1 2 3 4 
Bottom border: 9 10 11 12 
Left border: 1 5 9 
Right border: 4 8 12 

我们可以发现,程序成功地获取了矩阵的四条边界,并输出了所包含的元素。

结论

通过上述示例代码,我们成功地学习了如何在C++中获取矩阵的边界元素,并对其进行相关操作。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程