VECTOR排序

参考资料:
关于C++中vector和set使用sort方法进行排序
作者注:这篇文章写得相当全面,包括对vector和set中不同数据类型(包括结构体)的排序,还有一些还没看懂……特作此摘录,供当前及日后的学习

sort函数默认从小到大的排序。

一般类型的排序(int,double,char)

    vector<int> vec;
    for (int i = 0; i < 10;i++)
    {
        vec.push_back(rand());
    }
    sort(vec.begin(), vec.end());
    for (vector<int>::iterator it = vec.begin(); it < vec.end(); it++)
    {
        cout << *it << " ";//注意这里使用*表示解引用
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

结果:
这里写图片描述

结构体类型的排序(struct)

结构体定义如下:(试验样本)

typedef struct ClassDis
{
    double distance;
    int class1;
    int class2;
}ClassDis;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

需要自己定义一个比较函数(因为sort默认从小到大排序,因此我们只需要定义什么情况属于“小于”就行了)

//自定义“小于”
bool comp(const ClassDis &a, const ClassDis &b)
{
    return a.distance < b.distance;
}
  • 1
  • 2
  • 3
  • 4
  • 5
    vector<ClassDis> ddd;
    //随机赋值
    for (double a = 0; a < 10;a++)
    {
        ClassDis aaa{ (double)rand(), (int)a, (int)(a + 2) };
        ddd.push_back(aaa);
    }
    //sort
    sort(ddd.begin(), ddd.end(), comp);
    //输出结果
    for (vector<ClassDis>::iterator it = ddd.begin(); it < ddd.end(); it++)
    {
        cout << it->distance << "," << it->class1 << "," << it->class2 << endl;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值