fishhh 发表于 2023-5-15 09:51:21

swap交换矩阵值

在VS2019中,使用以下swap函数会报错,为什么???求大佬解惑

vector<vector<int>>   graph;
//假设以完成初始化,为n*n矩阵

//这个是可以的,交换矩阵的i,j行
swap(graph, graph);

//交换列,swap会报错??
for (int k = 0; k < graph.size(); k++) {
        swap(graph, graph);
}

isdkz 发表于 2023-5-15 09:52:08

在VS2019中,使用std::swap()函数会报错,是因为vector<vector<int>>类型的矩阵graph不支持std::swap()函数的操作。可以使用自定义的swap函数来交换矩阵的行和列。

自定义swap函数的代码如下:

void matrix_swap(vector<vector<int>>& graph, int i, int j, bool is_row) {
    if (is_row) {
      swap(graph[ i], graph);
    }
    else {
      for (int k = 0; k < graph.size(); k++) {
            swap(graph[ i], graph);
      }
    }
}

其中,is_row为bool类型,表示是否交换行。如果is_row为true,则交换行;否则,交换列。

使用自定义的swap函数来交换矩阵的行和列的代码如下:

//交换行
matrix_swap(graph, i, j, true);

//交换列
matrix_swap(graph, i, j, false);

希望能够帮助到你。

dolly_yos2 发表于 2023-5-15 10:15:06

最好把最小可工作的完整代码和具体报错信息给出来,这个代码看上去没什么问题
页: [1]
查看完整版本: swap交换矩阵值