c++ 利用sort()函数对复杂结构数组排序(比较器的实现)

#include<iostream>
#include <algorithm>
using namespace std;
class Student{
   
   
public:
    string m_name;
    int m_id;
    int m_age;
    Student(
### C++ 中 `sort` 函数对二维数组排序的方法 对于一维数组,可以直接调用 `std::sort()` 来实现升序排列。然而,在处理二维数组时,则需要额外指定比较准则来决定如何排序这些子数组。 当涉及到多维度的数据结构如向量的向量 (`vector<vector<int>>`) 时,可以通过提供自定义的比较器给 `std::sort()` 方法来进行特定条件下的排序操作。例如,为了按照每个内部向量的第二个元素进行排序: ```cpp #include <algorithm> #include <vector> bool compare(const std::vector<int>& a, const std::vector<int>& b){ return a[1] < b[1]; } int main(){ std::vector<std::vector<int>> vec = {{2, 3}, {1, 5}, {4, 7}}; // 使用预定义的compare函数作为第三个参数传递给sort() std::sort(vec.begin(), vec.end(), compare); } ``` 上述代码展示了通过创建一个名为 `compare` 的辅助函数来规定两个向量之间的大小关系,并将其作为最后一个参数传入到 `std::sort()` 函数中[^1]。 另外一种更简洁的方式是在调用 `std::sort()` 时不单独声明外部比较函数而是采用匿名函数(lambda表达式),这使得整个过程更加紧凑: ```cpp #include <algorithm> #include <vector> int main(){ std::vector<std::vector<int>> vec = {{2, 3}, {1, 5}, {4, 7}}; // Lambda 表达式用于直接在 sort() 内部定义比较逻辑 std::sort(vec.begin(), vec.end(), [](const std::vector<int>& v1, const std::vector<int>& v2) { return v1[1] < v2[1]; }); } ``` 值得注意的是,如果试图直接应用标准库算法至原始类型的二维数组上可能会遇到编译错误或者运行期异常,因为在这种情况下指针可能被标记为常量而阻止了必要的修改动作发生[^2]。 因此建议优先考虑使用 STL 容器类比如 `std::vector<>` 或者其他支持随机访问迭代器的标准模板库容器来代替传统的静态分配或多级动态分配方式构建的二维数组
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值