From 13ff1e7fb136aae192a67aecb606eaef66c96007 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sun, 23 Apr 2017 10:09:18 +0100 Subject: [PATCH] Expand calls to count and equal_range implementation --- .../boost/unordered/detail/implementation.hpp | 27 ------------------- include/boost/unordered/unordered_map.hpp | 21 ++++++++++----- include/boost/unordered/unordered_set.hpp | 13 ++++++--- 3 files changed, 24 insertions(+), 37 deletions(-) diff --git a/include/boost/unordered/detail/implementation.hpp b/include/boost/unordered/detail/implementation.hpp index 0b7fe3b0..ed0f8c32 100644 --- a/include/boost/unordered/detail/implementation.hpp +++ b/include/boost/unordered/detail/implementation.hpp @@ -3771,11 +3771,6 @@ struct table_unique : boost::unordered::detail::table // Accessors - std::size_t count(const_key_type& k) const - { - return this->find_node(k) ? 1 : 0; - } - value_type& at(const_key_type& k) const { if (this->size_) { @@ -3788,13 +3783,6 @@ struct table_unique : boost::unordered::detail::table std::out_of_range("Unable to find key in unordered_map.")); } - std::pair equal_range(const_key_type& k) const - { - node_pointer n = this->find_node(k); - return std::make_pair( - iterator(n), iterator(n ? node_algo::next_node(n) : n)); - } - // equals bool equals(table_unique const& other) const @@ -4493,21 +4481,6 @@ struct table_equiv : boost::unordered::detail::table this->move_init(x); } - // Accessors - - std::size_t count(const_key_type& k) const - { - node_pointer n = this->find_node(k); - return n ? node_algo::count(n, this) : 0; - } - - std::pair equal_range(const_key_type& k) const - { - node_pointer n = this->find_node(k); - return std::make_pair( - iterator(n), iterator(n ? node_algo::next_group(n, this) : n)); - } - // Equality bool equals(table_equiv const& other) const diff --git a/include/boost/unordered/unordered_map.hpp b/include/boost/unordered/unordered_map.hpp index 2b17ab04..8deca06d 100644 --- a/include/boost/unordered/unordered_map.hpp +++ b/include/boost/unordered/unordered_map.hpp @@ -1682,7 +1682,7 @@ template typename unordered_map::size_type unordered_map::count(const key_type& k) const { - return table_.count(k); + return table_.find_node(k) ? 1 : 0; } template @@ -1690,7 +1690,9 @@ std::pair::iterator, typename unordered_map::iterator> unordered_map::equal_range(const key_type& k) { - return table_.equal_range(k); + node_pointer n = table_.find_node(k); + return std::make_pair( + iterator(n), iterator(n ? table::node_algo::next_node(n) : n)); } template @@ -1698,7 +1700,9 @@ std::pair::const_iterator, typename unordered_map::const_iterator> unordered_map::equal_range(const key_type& k) const { - return table_.equal_range(k); + node_pointer n = table_.find_node(k); + return std::make_pair(const_iterator(n), + const_iterator(n ? table::node_algo::next_node(n) : n)); } template @@ -2146,7 +2150,8 @@ template typename unordered_multimap::size_type unordered_multimap::count(const key_type& k) const { - return table_.count(k); + node_pointer n = table_.find_node(k); + return n ? table::node_algo::count(n, &table_) : 0; } template @@ -2154,7 +2159,9 @@ std::pair::iterator, typename unordered_multimap::iterator> unordered_multimap::equal_range(const key_type& k) { - return table_.equal_range(k); + node_pointer n = table_.find_node(k); + return std::make_pair(iterator(n), + iterator(n ? table::node_algo::next_group(n, &table_) : n)); } template @@ -2162,7 +2169,9 @@ std::pair::const_iterator, typename unordered_multimap::const_iterator> unordered_multimap::equal_range(const key_type& k) const { - return table_.equal_range(k); + node_pointer n = table_.find_node(k); + return std::make_pair(const_iterator(n), + const_iterator(n ? table::node_algo::next_group(n, &table_) : n)); } template diff --git a/include/boost/unordered/unordered_set.hpp b/include/boost/unordered/unordered_set.hpp index be316fd2..7bb86954 100644 --- a/include/boost/unordered/unordered_set.hpp +++ b/include/boost/unordered/unordered_set.hpp @@ -1349,7 +1349,7 @@ template typename unordered_set::size_type unordered_set::count( const key_type& k) const { - return table_.count(k); + return table_.find_node(k) ? 1 : 0; } template @@ -1357,7 +1357,9 @@ std::pair::const_iterator, typename unordered_set::const_iterator> unordered_set::equal_range(const key_type& k) const { - return table_.equal_range(k); + node_pointer n = table_.find_node(k); + return std::make_pair(const_iterator(n), + const_iterator(n ? table::node_algo::next_node(n) : n)); } template @@ -1747,7 +1749,8 @@ template typename unordered_multiset::size_type unordered_multiset::count(const key_type& k) const { - return table_.count(k); + node_pointer n = table_.find_node(k); + return n ? table::node_algo::count(n, &table_) : 0; } template @@ -1755,7 +1758,9 @@ std::pair::const_iterator, typename unordered_multiset::const_iterator> unordered_multiset::equal_range(const key_type& k) const { - return table_.equal_range(k); + node_pointer n = table_.find_node(k); + return std::make_pair(const_iterator(n), + const_iterator(n ? table::node_algo::next_group(n, &table_) : n)); } template