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);
}
在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);
希望能够帮助到你。 最好把最小可工作的完整代码和具体报错信息给出来,这个代码看上去没什么问题
页:
[1]