c++ sort对二维数组按列排序
时间: 2025-06-09 20:34:38 浏览: 15
### C++ 对二维数组按列进行排序
为了按照指定的列对二维数组进行排序,在 C++ 中可以利用 `std::sort` 函数配合自定义比较器来完成这一操作。下面是一个具体的例子,展示了如何通过特定的一列数据来进行升序排列。
```cpp
#include <algorithm>
#include <vector>
#include <iostream>
// 定义一个用于比较两行中某一列数值大小的函数对象
struct CompareByColumn {
explicit CompareByColumn(size_t col) : column(col) {}
bool operator()(const std::vector<int>& lhs, const std::vector<int>& rhs) const {
return lhs[column] < rhs[column];
}
private:
size_t column;
};
void sortByColumn(std::vector<std::vector<int>>& matrix, size_t colIndex) {
// 使用 std::sort 和自定义比较器对矩阵中的每一行基于给定列索引处的元素进行排序
std::sort(matrix.begin(), matrix.end(), CompareByColumn(colIndex));
}
int main() {
// 创建并初始化一个简单的整型二维向量作为示例输入
std::vector<std::vector<int>> data = {{1, 4}, {2, 3}, {3, 2}, {4, 1}};
// 输出原始数据
std::cout << "Original Data:\n";
for (auto& row : data) {
for (auto elem : row) {
std::cout << elem << ' ';
}
std::cout << '\n';
}
// 调用sortByColumn方法以第二列为依据进行排序
sortByColumn(data, 1);
// 展示排序后的结果
std::cout << "\nSorted By Column 1:\n";
for (auto& row : data) {
for (auto elem : row) {
std::cout << elem << ' ';
}
std::cout << '\n';
}
return 0;
}
```
上述程序首先定义了一个名为 `CompareByColumn` 的结构体,它实现了重载括号运算符以便能够被 `std::sort` 接受作为一个谓词参数。接着定义了辅助函数 `sortByColumn()` 来接收待处理的数据集以及要排序的目标列编号,并调用了标准库算法 `std::sort` 进行实际的操作[^1]。
阅读全文
相关推荐

















