- C++
告诫后人
- 2022-3-22 7:58:51 @
当你开了一个 set<double>
并出于某种原因向里面插入了一个 nan
(通常由除以零导致),由于 nan
与任何数均不能进行比较,所以对于任意正常浮点数 a
,a < nan
和 nan < a
均为 false
,而根据 set
设定此类情况发生说明 a
与 nan
相同(正常情况下 (a < b) == (b < a) == false
确实表示两数相同),所以你无法向 set
中插入任何元素。
而依赖 emplace
第二项返回值判断是否成功插入的小伙伴(比如我)发现无法插入元素后可能误以为该元素已经出现在 set
中。
同时由于小于符号不适用于 nan
还会导致很多其他 set
的查找函数出错。
1 条评论
-
undefined 可爱! LV 10 SU @ 2022-3-22 16:55:31
原来 C++ 也有 NaN 这种东西吗 🤔
🌿 5
- 1