-1

我在犰狳库中使用排序功能,但它不断触发 NaN 错误,当我手动检查时这些错误不存在......所以我切换到 STL 排序功能并且它工作了!所以我的好奇心是,STL 排序函数如何处理 NaN?

4

1 回答 1

7

C++ STL 是否对 NaN 进行排序检查?

std::sort使用您为其提供的比较功能。如果您的函数“检查 NaN”,那么std::sort通过比较函数也是如此。如果您不提供比较功能,则std::less默认使用。那使用操作符<。如果您尝试对包含 NaN 的范围进行排序(除非您提供自定义比较函数),则 with NaNs的行为<不满足 的要求std::sort并且行为将未定义。

于 2020-02-09T18:30:08.920 回答