std::set 的 std::string 不等式实施

std::set of std::string inequality implementation

由于std::set是作为二叉树实现的,它如何比较std::string不等式?看起来像a < b && b < a吗?

它是直接使用字符串的长度还是以某种方式对其进行哈希处理? 它完全保证字符串的唯一性吗?

std::set 使用 less 对其键进行排序。这是 std::string 上的 operator<,它按字典顺序比较字符串。

它只是做了更少的两次 - 左右交换以进行第二次比较。如果两个 return 都为假,则字符串被认为是相等的。

是的,它确实保证了它的成员(包括字符串)的唯一性,只要 operator less 对成员类型执行预期的操作(这对于字符串当然是正确的,但可能不是那么正确对于用户定义的类型)。