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++中获取矩阵的边界元素,并对其进行相关操作。