C++ vector结构体排序导致程序意外中断

先说原因:自定义的比较函数不能带等号,只能小于或大于
定义了一个类如下:

class Flow {
    
    
	public:
		int id;
		int bandwidth;
		int arrTime;
		int startTime;
		int needTime;
		Flow(int i, int b, int a, int n);
};

定义了一个比较函数如下:

bool sortFlowsByArrtime(Flow x, Flow y) {
    
    
	return x.arrTime <= y.arrTime;
}

然后进行排序后输出:

sort(flows.begin(),flows.end(),sortFlowsByArrtime);
for (auto var : flows) {
    
    
	cout << var.id << " " << var.bandwidth << " " << var.arrTime << " " << var.needTime << endl;
}

每次都会在sort这一行意外中断。
return x.arrTime <= y.arrTime;修改为return x.arrTime < y.arrTime;,即可解决。
参考链接:https://www.coder.work/article/2746620

猜你喜欢

转载自blog.csdn.net/qq_44623371/article/details/130225785