std :: sort函数给出“总线错误:10”

时间:2015-12-05 06:26:37

标签: c++ struct stl

以下代码给出“总线错误:10”,虽然当n更改为30时它可以正常工作。我真的没有看到任何单一的原因导致该错误。为什么你认为这种情况正在发生?

#include <algorithm>
#include <cstdio>
#define MAX 100000
using namespace std;

struct suffix
{
    int cur;
};

suffix suffixes[MAX];

bool cmp(suffix a, suffix b)
{
    return (a.cur <= b.cur);
}

int main()
{
   int n = 1000;
   sort(suffixes,suffixes + n,cmp);
   return 0;
}

1 个答案:

答案 0 :(得分:4)

您的比较功能有问题。它不满足std::sort所期望的the requirements。它需要提供严格的弱排序,它必须返回false等效元素。尝试将其更改为:

bool cmp(suffix a, suffix b)
{
    return (a.cur < b.cur); // note comparison is < instead of <=
}