[英]specify equality between elements for find in unordered_set
我有一個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
都是基於哈希表的,而不是像傳統容器那樣基於紅黑樹的哈希表。 這樣可以非常快速,恆定地查找較大的數據集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.