以下代码给出“总线错误: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;
}
答案 0 :(得分:4)
您的比较功能有问题。它不满足std::sort
所期望的the requirements。它需要提供严格的弱排序,它必须返回false
等效元素。尝试将其更改为:
bool cmp(suffix a, suffix b)
{
return (a.cur < b.cur); // note comparison is < instead of <=
}