• c++ 的vector sort遇到栈错误


    在做pat乙级1082 射击比赛时 遇到了sort 段错误。

    题目链接:https://www.patest.cn/contests/pat-b-practise/1082

    感觉写的没啥毛病 但就是段错误 ,搜索了一下才明白,原来是sort函数在极端相等的情况下,比如比较的元素内容完全相同,sort会一直遍历下去直到越界。



    我原来的写法是:

    int compar(stu s1,stu s2){
    return s1.juli-s2.juli;

    }

    记得以前这样写是没问题,还是我记错了,在java中写没问题? 

    反正以后记住比较器用bool返回值好了额。。!!

    #include<iostream>

    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    #include<vector>
    #include<string>
    #include<cmath>


    struct stu{
    string bianhao;
    int x;
    int y;
    int juli;

    };
    bool compar(stu s1,stu s2){
    return s1.juli>s2.juli;

    }

    int main(){
    int k;
    scanf("%d",&k);
    vector<stu> vec;
    for(int i=0;i<k;i++){
    stu s ;
    cin>>s.bianhao>>s.x>>s.y;
    s.juli = s.x*s.x+s.y*s.y;
    vec.push_back(s);

    }
    if(k==0){

    return 0;
    }
    sort(vec.begin(),vec.end(),compar);


    cout<<vec[k-1].bianhao<<" "<<vec[0].bianhao;
    return 0;
    }

  • 相关阅读:
    资源链接
    Silverlight4 RIA应用开发
    社会心理学(第8版)
    C# 2.0 锐利体验
    C# 3.0 锐利体验
    C#面向对象设计模式纵横谈
    ASP.NET MVC2程序开发入门到精通
    Silverlight数独游戏
    StringBuilder研究和探索
    .NET 开发从入门到精通
  • 原文地址:https://www.cnblogs.com/lingluan533/p/12537299.html
Copyright © 2020-2023  润新知