C++中,std::set::insert() 只有在没有相同“value”的情况下才插入值。这里的“相同”是指 operator== 吗?还是指对于任何排序,operator<都为 false,或者是指其他内容?
C++中,std::set::insert() 只有在没有相同“value”的情况下才插入值。这里的“相同”是指 operator== 吗?还是指对于任何排序,operator<都为 false,或者是指其他内容?
<
比较键,则是如此。更一般地,在具有比较器 Compare
的有序容器中,如果满足 !Compare(k1,k2) && !Compare(k2,k1)
,则将两个键 k1
和 k2
视为等效的。operator==
或任何其他内容;它们只需要使用容器的比较器进行比较以提供 严格弱排序。set
只允许通过作为模板的一部分给定的函数对象类型对 T
进行比较。因此,这就是它定义等价性的方式。
对于 set
中的每个值,比较必须对该值和新值之间的两个排序之一进行评估,如果任何值在两种方式下都为 false,则不会存储该值。
NaN
不能成为 set<double>
的成员。 - Keith Thompson