std :: set of std :: string inequality implementation

时间:2015-11-10 18:58:58

标签: c++ stdstring stdset

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

是直接使用字符串的长度还是以某种方式对其进行散列? 它是否完全保证字符串的唯一性?

2 个答案:

答案 0 :(得分:5)

它只是少做两次 - 左右交换进行第二次比较。如果两者都返回false,则认为字符串相等。

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

答案 1 :(得分:2)

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