📅  最后修改于: 2023-12-03 15:37:34.887000             🧑  作者: Mango
2D向量是一个矩阵,由多个向量嵌套而成。在C++中,我们可以使用vector<vector
按行排序意味着按照行的顺序对2D向量进行排序。以下是按行排序的示例代码:
vector<vector<int>> matrix = {{3, 4, 1}, {1, 7, 9}, {5, 6, 2}};
// 按行排序
for(auto& row : matrix)
sort(row.begin(), row.end());
// 输出排序后的矩阵
for(auto& row : matrix) {
for(auto& col : row)
cout << col << " ";
cout << endl;
}
在上面的代码中,我们首先定义了一个2D向量matrix,然后使用for循环遍历矩阵的每一行,使用sort函数对每一行进行排序。最后,我们输出排序后的矩阵。
按列排序意味着按照列的顺序对2D向量进行排序。以下是按列排序的示例代码:
vector<vector<int>> matrix = {{3, 4, 1}, {1, 7, 9}, {5, 6, 2}};
// 转置矩阵
vector<vector<int>> transpose(matrix[0].size(), vector<int>(matrix.size()));
for(int i = 0; i < matrix.size(); i++) {
for(int j = 0; j < matrix[i].size(); j++) {
transpose[j][i] = matrix[i][j];
}
}
// 对转置后的矩阵按行排序
for(auto& row : transpose)
sort(row.begin(), row.end());
// 转置矩阵回来
matrix.resize(transpose[0].size());
for(int i = 0; i < matrix.size(); i++) {
matrix[i].resize(transpose.size());
for(int j = 0; j < matrix[i].size(); j++) {
matrix[i][j] = transpose[j][i];
}
}
// 输出排序后的矩阵
for(auto& row : matrix) {
for(auto& col : row)
cout << col << " ";
cout << endl;
}
在上面的代码中,我们首先定义了一个2D向量matrix,然后使用转置矩阵的方法,将每一列转变为每一行。然后,我们使用for循环遍历矩阵的每一行,使用sort函数对每一行进行排序。最后,我们再次转置矩阵,将其恢复原来的形式,并输出排序后的矩阵。
注意,在相关代码中,使用transpose函数进行矩阵转置,需要调用