21xrx.com
2024-11-05 14:44:33 Tuesday
登录
文章检索 我的文章 写文章
C++中如何实现向量(vector)的转置?
2023-06-29 06:24:40 深夜i     --     --
C++ 向量 转置

在C++中,向量(vector)是一种非常有用的数据结构,可以用来存储和操作一组数据。其中,向量的转置是将一个矩阵按照行和列的顺序交换,使得行变为列,列变为行。那么,在C++中如何实现向量的转置呢?

一种简单的实现方式是使用二维数组来存储矩阵,并通过循环将行和列交换。下面是一个示例代码:


#include <iostream>

#include <vector>

using namespace std;

vector<vector<int>> transpose(vector<vector<int>>& matrix) {

  int m = matrix.size(), n = matrix[0].size();

  vector<vector<int>> res(n, vector<int>(m, 0));

  for (int i = 0; i < m; i++) {

    for (int j = 0; j < n; j++) {

      res[j][i] = matrix[i][j];

    }

  }

  return res;

}

int main() {

  vector<vector<int>> matrix = { 3, 6, 8};

  vector<vector<int>> res = transpose(matrix);

  for (int i = 0; i < res.size(); i++) {

    for (int j = 0; j < res[0].size(); j++) {

      cout << res[i][j] << " ";

    }

    cout << endl;

  }

  return 0;

}

首先,我们定义了一个名为transpose的函数,它接受一个二维向量作为参数,并返回一个转置后的二维向量。在函数内部,我们先获取矩阵的行数m和列数n,并创建一个名为res的二维向量,它的行数为原矩阵的列数n,列数为原矩阵的行数m。然后,我们使用两个循环遍历原矩阵的每个元素,并将其复制到新的二维向量对应的位置中,即res[j][i] = matrix[i][j]。最后,我们返回转置后的二维向量res。

在主函数中,我们定义了一个3x3的矩阵,然后调用transpose函数获取其转置结果,并使用两个循环将结果打印到标准输出中。运行代码,输出结果如下:


1 4 7

2 5 8

3 6 9

可以看到,矩阵顺时针旋转后得到的转置结果正确无误。这证明了我们实现了正确的向量转置算法。

总之,C++中可以使用二维向量和循环来实现向量的转置,这是一种非常简单和直观的实现方式,可以在实际应用中发挥重要的作用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复