use*_*438 5 c++ std visual-studio-2010 visual-c++ unordered
我期望下面的两个无序集合被评估为等价,但令我惊讶的是它们不是.发生这种情况是因为两个字符串存储在同一个哈希桶中,而运算符==对集合中的项目进行顺序比较.这应该被视为std :: unordered_set中的错误吗?有人有一个优雅的解决方法吗?
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
{
}
Run Code Online (Sandbox Code Playgroud)