c++sort函数排二维数组
时间: 2024-11-13 11:15:04 浏览: 5
在C++中,`std::sort()` 函数通常用于对一维数组进行排序,对于二维数组,我们需要先将其转换为一维数组或者使用其他方法处理。如果你想按某个列进行排序,可以先提取那一列作为一维数据,然后进行排序。这里提供一种常见的做法:
假设我们有一个二维整数数组 `matrix`,想要按照第一列进行升序排列,可以这样做:
```cpp
#include <algorithm> // 包含 sort 功能
#include <vector>
// 把二维数组的第一列转换成一维 vector
std::vector<int> column1(const std::vector<std::vector<int>>& matrix) {
std::vector<int> column;
for (const auto& row : matrix) {
column.push_back(row[0]);
}
return column;
}
// 使用 sort 对一维列进行排序
void sortColumn(std::vector<std::vector<int>>& matrix) {
std::vector<int> sorted_column = column1(matrix);
std::sort(sorted_column.begin(), sorted_column.end()); // 升序排序
// 然后根据排序后的索引重新排列原矩阵
size_t index = 0;
for (size_t i = 0; i < matrix.size(); ++i) {
matrix[index++] = matrix[i]; // 每次将当前行替换到已排序的位置
}
}
// 示例
int main() {
std::vector<std::vector<int>> matrix = {{4, 2}, {1, 3}, {6, 5}};
sortColumn(matrix);
// 排序后的矩阵:{{1, 3}, {4, 2}, {6, 5}}
}
阅读全文