在 C++ 中,std::set::insert() 仅在没有具有相同“值”的值时插入一个值。同样,这是否意味着 operator== 或者它是否意味着 operator< 对于任何一个排序都是错误的,或者它是否意味着其他东西?
问问题
303 次
3 回答
5
这是否意味着对于哪个 operator< 对于任一排序都是错误的?
是的,如果集合使用默认比较器并使用<
. 更一般地,在带有比较器的有序容器中Compare
,两个键k1
和k2
被视为等效if !Compare(k1,k2) && !Compare(k2,k1)
。
不需要密钥来实现operator==
或其他任何东西;它们只需要使用容器的比较器进行比较即可给出严格的弱排序。
于 2012-10-02T00:13:51.487 回答
1
唯一set
允许执行的比较T
是通过作为模板的一部分进行比较的仿函数类型。因此,这就是它定义等价的方式。
对于 中的每个值,对于set
该值和新值之间的两个排序之一,比较必须评估为真。如果任何值都为假,那么它不会被存储。
于 2012-10-01T23:55:56.117 回答