其声明如下:
template<class T,class Compare=less<T>,class Alloc=allocator<T>> class set;
众所周知,“集合”中没有两个相等的键。它使用“比较”(默认为less<T>
)来比较两个键,这意味着它只能知道一个键少(less<T>
返回true
)或不少(less<T>
返回false
)比另一个。
set
如何避免存在两个相等的键?
std::set
确定元素的唯一性如下。
(强调我的)
标准库的每个地方都使用比较要求,唯一性通过使用等价关系来确定。用不精确的术语来说,如果两个对象
a
和b
都没有比另一个低,那么它们被认为是等价的:!comp(a, b) && !comp(b, a)
。