C++二维数组按照某列排序
时间: 2025-04-17 14:30:54 浏览: 28
### C++ 中对二维数组按指定列进行排序
为了实现按照特定列来对二维向量(`vector<vector<int>>`)中的数据进行排序,在C++中可以利用标准模板库(STL)所提供的 `std::sort()` 函数,并为其提供一个自定义比较器。该比较器用于决定两个元素之间的顺序关系。
下面是一个具体的例子,展示了如何创建这样的功能:
```cpp
#include <iostream>
#include <algorithm> // For std::sort()
#include <vector>
using namespace std;
// 自定义比较函数,依据第 col 列升序排列
bool compareByColumn(const vector<int>& lhs, const vector<int>& rhs, size_t col) {
return lhs[col] < rhs[col];
}
int main() {
// 初始化一个二维向量
vector<vector<int>> matrix = {{10, 30}, {20, 25}, {30, 20}};
// 定义要排序的列索引 (这里假设为第零列)
size_t columnIndexToSort = 0;
// 使用 lambda 表达式作为第三个参数传递给 sort 方法
stable_sort(matrix.begin(), matrix.end(),
[columnIndexToSort](const auto& l, const auto& r){
return l[columnIndexToSort] < r[columnIndexToSort];});
// 输出已排序后的矩阵
for (auto row : matrix) {
for (auto elem : row) {
cout << elem << " ";
}
cout << endl;
}
return 0;
}
```
上述程序通过使用带有lambda表达式的 `stable_sort` 来代替简单的 `compareByColumn` 函数[^1]。这种方式不仅简化了代码结构而且提高了可读性和灵活性。注意这里的 `size_t columnIndexToSort=0;` 可以被调整为你想要用来排序的那一列的下标值。
阅读全文
相关推荐


















