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 对成员类型执行预期的操作(这对于字符串当然是正确的,但可能不是那么正确对于用户定义的类型)。
由于std::set
是作为二叉树实现的,它如何比较std::string
不等式?看起来像a < b && b < a
吗?
它是直接使用字符串的长度还是以某种方式对其进行哈希处理? 它完全保证字符串的唯一性吗?
std::set
使用 less
对其键进行排序。这是 std::string
上的 operator<
,它按字典顺序比较字符串。
它只是做了更少的两次 - 左右交换以进行第二次比较。如果两个 return 都为假,则字符串被认为是相等的。
是的,它确实保证了它的成员(包括字符串)的唯一性,只要 operator less 对成员类型执行预期的操作(这对于字符串当然是正确的,但可能不是那么正确对于用户定义的类型)。