我正在使用Armadillo库中的sort函数,但是它会不断触发NaN错误,当我手动检查时,NaN错误不存在。因此我切换到STL sort函数,它起作用了!所以我的好奇心是,STL排序功能如何处理NaN?]
C ++ STL是否对NaN进行排序检查?
std::sort
使用您提供的比较功能。如果您的函数“检查NaN”,则std::sort
也会通过比较函数进行。如果不提供比较功能,则默认使用std::less
。使用运算符<
。具有NaN的<
的行为不满足std::sort
的要求,如果尝试对包含多个NaN的范围进行排序,则该行为将是不确定的(除非您提供自定义比较功能)。