我原以为下面的两个无序集合会被认为是相等的,但令我惊讶的是它们并不相同。这是因为这两个字符串存储在同一个哈希桶中,而operator==对集合中的项目进行顺序比较。这是否应该被认为是std::unordered_set中的一个bug?是否有任何优雅的解决方法?
std::unordered_set<std::string> a,b;
a.insert("500666");
a.insert("961021");
b.insert("961021");
b.insert("500666");
if (a == b) // condition is evaulated as false
{
}
unordered_set
的等式比较器。 - Praetorian