diff options
Diffstat (limited to 'boost/unordered/unordered_set.hpp')
-rw-r--r-- | boost/unordered/unordered_set.hpp | 77 |
1 files changed, 46 insertions, 31 deletions
diff --git a/boost/unordered/unordered_set.hpp b/boost/unordered/unordered_set.hpp index 384769ddf1..5d9a0b8e8d 100644 --- a/boost/unordered/unordered_set.hpp +++ b/boost/unordered/unordered_set.hpp @@ -14,14 +14,13 @@ #endif #include <boost/unordered/unordered_set_fwd.hpp> -#include <boost/unordered/detail/allocator_helpers.hpp> #include <boost/unordered/detail/equivalent.hpp> #include <boost/unordered/detail/unique.hpp> #include <boost/unordered/detail/util.hpp> #include <boost/functional/hash.hpp> #include <boost/move/move.hpp> -#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) #include <initializer_list> #endif @@ -131,7 +130,7 @@ namespace unordered unordered_set(unordered_set&&, allocator_type const&); #endif -#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) unordered_set( std::initializer_list<value_type>, size_type = boost::unordered::detail::default_bucket_count, @@ -174,7 +173,7 @@ namespace unordered #endif #endif -#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) unordered_set& operator=(std::initializer_list<value_type>); #endif @@ -201,12 +200,12 @@ namespace unordered iterator begin() { - return iterator(table_.begin()); + return table_.begin(); } const_iterator begin() const { - return const_iterator(table_.begin()); + return table_.begin(); } iterator end() @@ -221,7 +220,7 @@ namespace unordered const_iterator cbegin() const { - return const_iterator(table_.begin()); + return table_.begin(); } const_iterator cend() const @@ -231,15 +230,15 @@ namespace unordered // emplace -#if defined(BOOST_UNORDERED_VARIADIC_MOVE) +#if !defined(BOOST_NO_VARIADIC_TEMPLATES) template <class... Args> - std::pair<iterator, bool> emplace(Args&&... args) + std::pair<iterator, bool> emplace(BOOST_FWD_REF(Args)... args) { return table_.emplace(boost::forward<Args>(args)...); } template <class... Args> - iterator emplace_hint(const_iterator, Args&&... args) + iterator emplace_hint(const_iterator, BOOST_FWD_REF(Args)... args) { return table_.emplace(boost::forward<Args>(args)...).first; } @@ -400,7 +399,7 @@ namespace unordered template <class InputIt> void insert(InputIt, InputIt); -#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) void insert(std::initializer_list<value_type>); #endif @@ -450,7 +449,8 @@ namespace unordered size_type bucket(const key_type& k) const { - return table_.hash_function()(k) % table_.bucket_count_; + return table::to_bucket(table_.bucket_count_, + table_.hash(k)); } local_iterator begin(size_type n) @@ -499,6 +499,7 @@ namespace unordered float load_factor() const; void max_load_factor(float); void rehash(size_type); + void reserve(size_type); #if !BOOST_WORKAROUND(__BORLANDC__, < 0x0582) friend bool operator==<T,H,P,A>( @@ -601,7 +602,7 @@ namespace unordered unordered_multiset(unordered_multiset&&, allocator_type const&); #endif -#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) unordered_multiset( std::initializer_list<value_type>, size_type = boost::unordered::detail::default_bucket_count, @@ -645,7 +646,7 @@ namespace unordered #endif #endif -#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) unordered_multiset& operator=(std::initializer_list<value_type>); #endif @@ -702,15 +703,15 @@ namespace unordered // emplace -#if defined(BOOST_UNORDERED_VARIADIC_MOVE) +#if !defined(BOOST_NO_VARIADIC_TEMPLATES) template <class... Args> - iterator emplace(Args&&... args) + iterator emplace(BOOST_FWD_REF(Args)... args) { return table_.emplace(boost::forward<Args>(args)...); } template <class... Args> - iterator emplace_hint(const_iterator, Args&&... args) + iterator emplace_hint(const_iterator, BOOST_FWD_REF(Args)... args) { return table_.emplace(boost::forward<Args>(args)...); } @@ -871,7 +872,7 @@ namespace unordered template <class InputIt> void insert(InputIt, InputIt); -#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) void insert(std::initializer_list<value_type>); #endif @@ -921,7 +922,8 @@ namespace unordered size_type bucket(const key_type& k) const { - return table_.hash_function()(k) % table_.bucket_count_; + return table::to_bucket(table_.bucket_count_, + table_.hash(k)); } local_iterator begin(size_type n) @@ -970,6 +972,7 @@ namespace unordered float load_factor() const; void max_load_factor(float); void rehash(size_type); + void reserve(size_type); #if !BOOST_WORKAROUND(__BORLANDC__, < 0x0582) friend bool operator==<T,H,P,A>( @@ -1059,7 +1062,7 @@ namespace unordered #endif -#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) template <class T, class H, class P, class A> unordered_set<T,H,P,A>::unordered_set( @@ -1101,7 +1104,7 @@ namespace unordered table_.insert_range(first, last); } -#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) template <class T, class H, class P, class A> void unordered_set<T,H,P,A>::insert( std::initializer_list<value_type> list) @@ -1114,7 +1117,7 @@ namespace unordered typename unordered_set<T,H,P,A>::iterator unordered_set<T,H,P,A>::erase(const_iterator position) { - return iterator(table_.erase(position.node_)); + return table_.erase(position); } template <class T, class H, class P, class A> @@ -1129,7 +1132,7 @@ namespace unordered unordered_set<T,H,P,A>::erase( const_iterator first, const_iterator last) { - return iterator(table_.erase_range(first.node_, last.node_)); + return table_.erase_range(first, last); } template <class T, class H, class P, class A> @@ -1166,7 +1169,7 @@ namespace unordered typename unordered_set<T,H,P,A>::const_iterator unordered_set<T,H,P,A>::find(const key_type& k) const { - return const_iterator(table_.find_node(k)); + return table_.find_node(k); } template <class T, class H, class P, class A> @@ -1178,7 +1181,7 @@ namespace unordered CompatibleHash const& hash, CompatiblePredicate const& eq) const { - return const_iterator(table_.generic_find_node(k, hash, eq)); + return table_.generic_find_node(k, hash, eq); } template <class T, class H, class P, class A> @@ -1225,6 +1228,12 @@ namespace unordered } template <class T, class H, class P, class A> + void unordered_set<T,H,P,A>::reserve(size_type n) + { + table_.reserve(n); + } + + template <class T, class H, class P, class A> inline bool operator==( unordered_set<T,H,P,A> const& m1, unordered_set<T,H,P,A> const& m2) @@ -1337,7 +1346,7 @@ namespace unordered #endif -#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) template <class T, class H, class P, class A> unordered_multiset<T,H,P,A>::unordered_multiset( @@ -1379,7 +1388,7 @@ namespace unordered table_.insert_range(first, last); } -#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) template <class T, class H, class P, class A> void unordered_multiset<T,H,P,A>::insert( std::initializer_list<value_type> list) @@ -1392,7 +1401,7 @@ namespace unordered typename unordered_multiset<T,H,P,A>::iterator unordered_multiset<T,H,P,A>::erase(const_iterator position) { - return iterator(table_.erase(position.node_)); + return table_.erase(position); } template <class T, class H, class P, class A> @@ -1407,7 +1416,7 @@ namespace unordered unordered_multiset<T,H,P,A>::erase( const_iterator first, const_iterator last) { - return iterator(table_.erase_range(first.node_, last.node_)); + return table_.erase_range(first, last); } template <class T, class H, class P, class A> @@ -1444,7 +1453,7 @@ namespace unordered typename unordered_multiset<T,H,P,A>::const_iterator unordered_multiset<T,H,P,A>::find(const key_type& k) const { - return const_iterator(table_.find_node(k)); + return table_.find_node(k); } template <class T, class H, class P, class A> @@ -1456,7 +1465,7 @@ namespace unordered CompatibleHash const& hash, CompatiblePredicate const& eq) const { - return const_iterator(table_.generic_find_node(k, hash, eq)); + return table_.generic_find_node(k, hash, eq); } template <class T, class H, class P, class A> @@ -1503,6 +1512,12 @@ namespace unordered } template <class T, class H, class P, class A> + void unordered_multiset<T,H,P,A>::reserve(size_type n) + { + table_.reserve(n); + } + + template <class T, class H, class P, class A> inline bool operator==( unordered_multiset<T,H,P,A> const& m1, unordered_multiset<T,H,P,A> const& m2) |