c++ 编写将2d向量顺时针旋转90度的函数

4si2a6ki  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(396)

我正试图顺时针旋转一个二维向量,但我无法让它工作的向量,不是方形。
以下是我尝试的方法

bool Pgm::Clockwise(){
    int i, j, k;
    vector <vector <int> > tempPixel;
    for (i = 0; i < Pixels.size(); i++) {
        tempPixel.push_back(Pixels.at(i));
    }

    for (j = 0; j < tempPixel.size(); j++) {
        tempPixel.push_back(vector<int>());
        for (k = 0; k < tempPixel.at(0).size(); k++) {
            tempPixel.at(j).push_back(Pixels.at(j));
        }
    }

    return true;
}
s4n0splo

s4n0splo1#

#include <vector>

std::vector<std::vector<int>> rotateClockwise(std::vector<std::vector<int>> v) {
    int n = v.size();
    int m = v[0].size();

    // create new vector with swapped dimensions
    std::vector<std::vector<int>> rotated(m, std::vector<int>(n));

    // populate the new vector
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            rotated[j][n-i-1] = v[i][j];
        }
    }

    return rotated;
}

这个函数以一个2D向量作为输入,返回一个顺时针旋转90度的新的2D向量。它首先创建一个新的向量,并将其旋转,同时交换维度,然后按照适当的顺序从输入向量中复制元素来填充它。我希望这能帮助你了解。

相关问题