From 596e1ce135de1bc03e1a05cee63176ccedaab08b Mon Sep 17 00:00:00 2001 From: Christian Mazakas Date: Thu, 13 Jan 2022 09:15:52 -0800 Subject: [PATCH 1/2] Add tests for `unordered_multiset::contains()` --- test/unordered/contains_tests.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test/unordered/contains_tests.cpp b/test/unordered/contains_tests.cpp index 45bc59d9..e6123959 100644 --- a/test/unordered/contains_tests.cpp +++ b/test/unordered/contains_tests.cpp @@ -246,6 +246,25 @@ void test_set() test_set_non_transparent_contains(); } +void test_multiset() +{ + typedef boost::unordered_multiset + transparent_multiset; + + typedef boost::unordered_multiset + non_transparent_multiset1; + typedef boost::unordered_multiset + non_transparent_multiset2; + typedef boost::unordered_multiset + non_transparent_multiset3; + + test_set_transparent_contains(); + test_set_non_transparent_contains(); + test_set_non_transparent_contains(); + test_set_non_transparent_contains(); +} + UNORDERED_AUTO_TEST (contains) { test_map(); test_multimap(); From 97734fd8954753ee2b5c383f31a2f8e76240e5ff Mon Sep 17 00:00:00 2001 From: Christian Mazakas Date: Thu, 13 Jan 2022 09:16:03 -0800 Subject: [PATCH 2/2] Implement `unordered_multiset::contains()` --- include/boost/unordered/unordered_set.hpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/include/boost/unordered/unordered_set.hpp b/include/boost/unordered/unordered_set.hpp index 0210056d..d6f1abc3 100644 --- a/include/boost/unordered/unordered_set.hpp +++ b/include/boost/unordered/unordered_set.hpp @@ -1125,6 +1125,23 @@ namespace boost { const_iterator find(CompatibleKey const&, CompatibleHash const&, CompatiblePredicate const&) const; + bool contains(const key_type& k) const + { + return table_.find_node_impl( + table::policy::apply_hash(this->hash_function(), k), k, + this->key_eq()); + } + + template + typename boost::enable_if_c::value, + bool>::type + contains(const Key& k) const + { + return table_.find_node_impl( + table::policy::apply_hash(this->hash_function(), k), k, + this->key_eq()); + } + size_type count(const key_type&) const; template