为在unordered_set中查找指定元素之间的相等性

specify equality between elements for find in unordered_set

本文关键字:之间 元素 unordered set 查找 为在      更新时间:2023-10-16

我有一个类型Extended_Expression,我在无序集合中使用它,并且声明的等式如下:

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

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

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

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

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