Commit 76af1644 by Evan Brown Committed by Copybara-Service

Remove the has_element function and use FindElement instead.

PiperOrigin-RevId: 557920808
Change-Id: I1eb0ca1ea9e9de542321fbc23d82218c5d449fbf
parent 88ed1832
...@@ -2453,8 +2453,10 @@ class raw_hash_set { ...@@ -2453,8 +2453,10 @@ class raw_hash_set {
const raw_hash_set* outer = &a; const raw_hash_set* outer = &a;
const raw_hash_set* inner = &b; const raw_hash_set* inner = &b;
if (outer->capacity() > inner->capacity()) std::swap(outer, inner); if (outer->capacity() > inner->capacity()) std::swap(outer, inner);
for (const value_type& elem : *outer) for (const value_type& elem : *outer) {
if (!inner->has_element(elem)) return false; auto it = PolicyTraits::apply(FindElement{*inner}, elem);
if (it == inner->end() || !(*it == elem)) return false;
}
return true; return true;
} }
...@@ -2659,24 +2661,6 @@ class raw_hash_set { ...@@ -2659,24 +2661,6 @@ class raw_hash_set {
} }
} }
bool has_element(const value_type& elem) const {
size_t hash = PolicyTraits::apply(HashElement{hash_ref()}, elem);
auto seq = probe(common(), hash);
const ctrl_t* ctrl = control();
while (true) {
Group g{ctrl + seq.offset()};
for (uint32_t i : g.Match(H2(hash))) {
if (ABSL_PREDICT_TRUE(
PolicyTraits::element(slot_array() + seq.offset(i)) == elem))
return true;
}
if (ABSL_PREDICT_TRUE(g.MaskEmpty())) return false;
seq.next();
assert(seq.index() <= capacity() && "full table!");
}
return false;
}
// TODO(alkis): Optimize this assuming *this and that don't overlap. // TODO(alkis): Optimize this assuming *this and that don't overlap.
raw_hash_set& move_assign(raw_hash_set&& that, std::true_type) { raw_hash_set& move_assign(raw_hash_set&& that, std::true_type) {
raw_hash_set tmp(std::move(that)); raw_hash_set tmp(std::move(that));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment