C++ std :: set和std :: multiset

A R*_*Roy 6 c++ containers std set multiset

在C++中默认情况下都std::setstd::multisetstd::less<T>作为他们的比较.任何人都可以解释如何std::multiset允许重复,std::set不是吗?

Jer*_*fin 6

两者都以upper_bound现有内容的等效a开头,以找到新项目的正确插入点.

std::set 然后检查是否找到了一个密钥等于新密钥的现有项目,如果返回,则表示信令失败.

std::multiset只需在该点插入新项目(如果在上面的步骤中没有返回,std::set则执行相同的操作).

  • 我认为std :: set正在检查等价,而不是相等,不是吗?特别是,可以使用仅定义`operator <`(严格弱排序)的类型,但不能定义`operator ==`. (3认同)