在unordered_set中指定find之间的相等性

时间:2014-08-28 15:52:47

标签: c++ unordered-set

我有一个类型Extended_Expression,我在无序集中使用,并且使用如下所示的相等:

bool ExtendedExpression::operator == (const ExtendedExpression & exp) const{ ... }

但unordered_set的find运算符似乎不起作用,似乎它正在使用另一种相等的内存地址。

指定要使用的相等运算符的最简单方法是什么?我是C ++的初学者,如果问题很明显,那就很抱歉。

1 个答案:

答案 0 :(得分:0)

如果您希望std::hash按预期工作,则需要为您的类型专门设置unordered_set。有关示例,请参阅此处的答案https://stackoverflow.com/a/8157967/2558027

所有新的无序容器(例如unordered_map)都是基于哈希表的,而不是像传统的那样基于红黑树。这允许非常快速,恒定的时间查找更大的数据集。