分类功能C分段故障

分类功能C分段故障,第1张

概述在这段代码中,对于向量大小,n> = 32767,它给出了分段错误,但是直到32766,它运行正常.什么可能是错误?这是完整的代码. #include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<utility>#include<algorithm>#include<sys/time.h>using n 在这段代码中,对于向量大小,n> = 32767,它给出了分段错误,但是直到32766,它运行正常.什么可能是错误?这是完整的代码.
#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<utility>#include<algorithm>#include<sys/time.h>using namespace std;#define MAX 100000bool compare(pair<int,int> p1,pair<int,int> p2) {    if(p1.second < p2.second)        return 1;    else if(p1.second > p2.second)        return 0;    if(p1.first <= p2.first)        return 1;    else        return 0;}int main() {    freopen("randomin.txt","r",stdin);    int n;    scanf("%d",&n);    vector< pair<int,int> > p(n);    for(int i=0;i<n;i++)        scanf("%d%d",&p[i].first,&p[i].second);    **printf("%d\n",(int)p.max_size()); // prints 536870911**    sort(p.begin(),p.begin()+n,compare);    //for(int i=0;i<n;i++)        //printf("%d %d\n",p[i].first,p[i].second);        printf("%.6f\n",(p[n-1].second+p[n-2].second)/(20.0+p[n-1].first+p[n-2].first));    return 0;}
解决方法 这可能与您的细分错误无关,但…

在C中,你的“比较”谓词必须是strict weak ordering.特别是“比较(X,X)”必须为任何X返回“false”.在比较函数中,如果两个对都相同,则打到测试(p1.first< = p2.first),并返回“true”.因此,这个“比较”谓词没有强制严格的弱排序,而将其传递给“排序”的结果是未定义的.

总结

以上是内存溢出为你收集整理的分类功能C分段故障全部内容,希望文章能够帮你解决分类功能C分段故障所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1247782.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存