21xrx.com
2025-03-30 17:54:01 Sunday
文章检索 我的文章 写文章
C++中如何实现向量(vector)的转置?
2023-06-29 06:24:40 深夜i     122     0
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++中可以使用二维向量和循环来实现向量的转置,这是一种非常简单和直观的实现方式,可以在实际应用中发挥重要的作用。

  
  

评论区

请求出错了