关于 nth_element 自定义 cmp 的疑问

P4148 简单题

红火恍惚cxy @ 2023-07-11 17:00:10

我在写 KDT 用 nth_element 进行排序时,定义了 cmp 函数,却因为将 < 写成了 \leq 出现了问题。
具体来说,我把

inline bool cmpx(qwq x,qwq y){
    return x.x<y.x;
}

写成了

inline bool cmpx(qwq x,qwq y){
    return x.x<=y.x;
}

这导致了排序出现错误。
使用 nth_element 时如下:

nth_element(trr.begin()+l,trr.begin()+mid,trr.begin()+r+1,(((dep&1)==1)?cmpx:cmpy));

如果需要的话,完整代码

请问各位大佬这是什么原因导致的?

我一直不太清楚 cmp 函数在 STL 中的实现是什么样的,所以如果可以的话想麻烦各位大佬解释一下 qwq。
我已经不止一次栽到这个地方了……


by Tibrella @ 2023-07-11 17:48:06

@ud2_ az,那就是我没搞清楚,当时用过没出问题(


上一页 |