41 #ifndef PB_DS_ASSOC_CNTNR_HPP
42 #define PB_DS_ASSOC_CNTNR_HPP
44 #include <bits/c++config.h>
64 #define PB_DS_HASH_BASE \
65 detail::container_base_dispatch<Key, Mapped, _Alloc, Tag, \
66 typename __gnu_cxx::typelist::append< \
67 typename __gnu_cxx::typelist::create4<Hash_Fn, Eq_Fn, Resize_Policy, \
68 detail::integral_constant<int, Store_Hash> >::type, Policy_Tl>::type>::type
95 template<
typename Key,
99 typename Resize_Policy,
119 template<
typename T0>
122 template<
typename T0,
typename T1>
125 template<
typename T0,
typename T1,
typename T2>
128 template<
typename T0,
typename T1,
typename T2,
typename T3>
132 template<
typename T0,
typename T1,
typename T2,
typename T3,
typename T4>
136 template<
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
141 template<
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
142 typename T5,
typename T6>
144 :
base_type(t0, t1, t2, t3, t4, t5, t6) { }
146 template<
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
147 typename T5,
typename T6,
typename T7>
149 :
base_type(t0, t1, t2, t3, t4, t5, t6, t7) { }
151 template<
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
152 typename T5,
typename T6,
typename T7,
typename T8>
155 :
base_type(t0, t1, t2, t3, t4, t5, t6, t7, t8)
163 #undef PB_DS_HASH_BASE
166 #define PB_DS_CC_HASH_BASE \
167 basic_hash_table<Key, Mapped, Hash_Fn, Eq_Fn, Resize_Policy, Store_Hash, \
169 typename __gnu_cxx::typelist::create1<Comb_Hash_Fn>::type, _Alloc>
196 template<
typename Key,
198 typename Hash_Fn =
typename detail::default_hash_fn<Key>::type,
199 typename Eq_Fn =
typename detail::default_eq_fn<Key>::type,
201 typename Resize_Policy =
typename detail::default_resize_policy<Comb_Hash_Fn>::type,
203 typename _Alloc = std::allocator<char> >
252 template<
typename It>
254 { base_type::copy_from_range(first, last); }
259 template<
typename It>
262 { this->copy_from_range(first, last); }
270 template<
typename It>
273 { this->copy_from_range(first, last); }
282 template<
typename It>
286 { this->copy_from_range(first, last); }
296 template<
typename It>
300 { this->copy_from_range(first, last); }
325 #undef PB_DS_CC_HASH_BASE
328 #define PB_DS_GP_HASH_BASE \
329 basic_hash_table<Key, Mapped, Hash_Fn, Eq_Fn, Resize_Policy, Store_Hash, \
331 typename __gnu_cxx::typelist::create2<Comb_Probe_Fn, Probe_Fn>::type, _Alloc>
359 template<
typename Key,
361 typename Hash_Fn =
typename detail::default_hash_fn<Key>::type,
362 typename Eq_Fn =
typename detail::default_eq_fn<Key>::type,
364 typename Probe_Fn =
typename detail::default_probe_fn<Comb_Probe_Fn>::type,
365 typename Resize_Policy =
typename detail::default_resize_policy<Comb_Probe_Fn>::type,
367 typename _Alloc = std::allocator<char> >
429 template<
typename It>
431 { base_type::copy_from_range(first, last); }
437 template<
typename It>
440 { base_type::copy_from_range(first, last); }
448 template<
typename It>
451 { base_type::copy_from_range(first, last); }
460 template<
typename It>
464 { base_type::copy_from_range(first, last); }
474 template<
typename It>
478 { base_type::copy_from_range(first, last); }
490 template<
typename It>
495 { base_type::copy_from_range(first, last); }
520 #undef PB_DS_GP_HASH_BASE
528 #define PB_DS_BRANCH_BASE \
529 detail::container_base_dispatch<Key, Mapped, _Alloc, Tag, Policy_Tl>::type
553 template<
typename Key,
typename Mapped,
typename Tag,
554 typename Node_Update,
typename Policy_Tl,
typename _Alloc>
572 template<
typename T0>
575 template<
typename T0,
typename T1>
578 template<
typename T0,
typename T1,
typename T2>
581 template<
typename T0,
typename T1,
typename T2,
typename T3>
585 template<
typename T0,
typename T1,
typename T2,
typename T3,
typename T4>
589 template<
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
594 template<
typename T0,
typename T1,
typename T2,
typename T3,
typename T4,
595 typename T5,
typename T6>
597 :
base_type(t0, t1, t2, t3, t4, t5, t6) { }
599 #undef PB_DS_BRANCH_BASE
602 #define PB_DS_TREE_NODE_AND_IT_TRAITS \
603 detail::tree_traits<Key, Mapped,Cmp_Fn,Node_Update,Tag,_Alloc>
605 #define PB_DS_TREE_BASE \
606 basic_branch<Key,Mapped, Tag, \
607 typename PB_DS_TREE_NODE_AND_IT_TRAITS::node_update, \
608 typename __gnu_cxx::typelist::create2<Cmp_Fn, \
609 PB_DS_TREE_NODE_AND_IT_TRAITS>::type, _Alloc>
629 template<
typename Key,
typename Mapped,
typename Cmp_Fn = std::less<Key>,
630 typename Tag = rb_tree_tag,
631 template<
typename Node_CItr,
typename Node_Itr,
632 typename Cmp_Fn_,
typename _Alloc_>
633 class Node_Update = null_node_update,
634 typename _Alloc = std::allocator<char> >
654 template<
typename It>
656 { base_type::copy_from_range(first, last); }
662 template<
typename It>
665 { base_type::copy_from_range(first, last); }
689 #undef PB_DS_TREE_BASE
690 #undef PB_DS_TREE_NODE_AND_IT_TRAITS
693 #define PB_DS_TRIE_NODE_AND_IT_TRAITS \
694 detail::trie_traits<Key,Mapped,_ATraits,Node_Update,Tag,_Alloc>
696 #define PB_DS_TRIE_BASE \
697 basic_branch<Key,Mapped,Tag, \
698 typename PB_DS_TRIE_NODE_AND_IT_TRAITS::node_update, \
699 typename __gnu_cxx::typelist::create2<_ATraits, \
700 PB_DS_TRIE_NODE_AND_IT_TRAITS >::type, _Alloc>
720 template<
typename Key,
722 typename _ATraits = \
723 typename detail::default_trie_access_traits<Key>::type,
724 typename Tag = pat_trie_tag,
725 template<
typename Node_CItr,
729 class Node_Update = null_node_update,
730 typename _Alloc = std::allocator<char> >
750 template<
typename It>
752 { base_type::copy_from_range(first, last); }
757 template<
typename It>
760 { base_type::copy_from_range(first, last); }
784 #undef PB_DS_TRIE_BASE
785 #undef PB_DS_TRIE_NODE_AND_IT_TRAITS
793 #define PB_DS_LU_BASE \
794 detail::container_base_dispatch<Key, Mapped, _Alloc, list_update_tag, \
795 typename __gnu_cxx::typelist::create2<Eq_Fn, Update_Policy>::type>::type
810 template<
typename Key,
812 class Eq_Fn =
typename detail::default_eq_fn<Key>::type,
814 class _Alloc = std::allocator<char> >
830 template<
typename It>
832 { base_type::copy_from_range(first, last); }
General-probing hash.
Definition: tag_and_trait.hpp:144
virtual ~trie()
Definition: assoc_container.hpp:766
gp_hash_table(It first, It last, const hash_fn &h, const eq_fn &e)
Definition: assoc_container.hpp:449
void swap(list_update &other)
Definition: assoc_container.hpp:852
PB_DS_CC_HASH_BASE base_type
Definition: assoc_container.hpp:207
gp_hash_table(const hash_fn &h, const eq_fn &e, const comb_probe_fn &cp)
Definition: assoc_container.hpp:401
gp_hash_table(const hash_fn &h, const eq_fn &e, const comb_probe_fn &cp, const probe_fn &p, const resize_policy &rp)
Definition: assoc_container.hpp:422
basic_hash_table(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
Definition: assoc_container.hpp:153
PB_DS_TRIE_BASE base_type
Definition: assoc_container.hpp:734
tree(const cmp_fn &c)
Definition: assoc_container.hpp:648
gp_hash_table(It first, It last, const hash_fn &h)
Definition: assoc_container.hpp:438
cc_hash_table(It first, It last, const hash_fn &h)
Definition: assoc_container.hpp:260
cc_hash_table(It first, It last)
Definition: assoc_container.hpp:253
Cmp_Fn cmp_fn
Comparison functor type.
Definition: assoc_container.hpp:642
virtual ~basic_hash_table()
Definition: assoc_container.hpp:111
basic_branch(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4)
Definition: assoc_container.hpp:586
void swap(cc_hash_table &other)
Definition: assoc_container.hpp:321
PB_DS_BRANCH_BASE base_type
Definition: assoc_container.hpp:558
basic_hash_table(const basic_hash_table &other)
Definition: assoc_container.hpp:116
#define PB_DS_TREE_BASE
Definition: assoc_container.hpp:605
basic_hash_table & operator=(const base_type &)
cc_hash_table & operator=(const cc_hash_table &other)
Definition: assoc_container.hpp:310
Node_Update node_update
Definition: assoc_container.hpp:561
cc_hash_tag container_category
Definition: assoc_container.hpp:210
gp_hash_table & operator=(const gp_hash_table &other)
Definition: assoc_container.hpp:505
#define PB_DS_GP_HASH_BASE
Definition: assoc_container.hpp:328
Resize_Policy resize_policy
Definition: assoc_container.hpp:379
virtual ~basic_branch()
Definition: assoc_container.hpp:564
cc_hash_table()
Default constructor.
Definition: assoc_container.hpp:217
trie(const trie &other)
Definition: assoc_container.hpp:762
direct_mask_range_hashing type
Dispatched type.
Definition: standard_policies.hpp:83
tree(It first, It last)
Definition: assoc_container.hpp:655
virtual ~gp_hash_table()
Definition: assoc_container.hpp:502
basic_branch(const basic_branch &other)
Definition: assoc_container.hpp:569
#define PB_DS_HASH_BASE
Definition: assoc_container.hpp:64
gp_hash_table(const gp_hash_table &other)
Definition: assoc_container.hpp:497
virtual ~cc_hash_table()
Definition: assoc_container.hpp:307
basic_hash_table(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
Definition: assoc_container.hpp:148
tree(const tree &other)
Definition: assoc_container.hpp:667
cc_hash_table(It first, It last, const hash_fn &h, const eq_fn &e, const comb_hash_fn &ch)
Definition: assoc_container.hpp:283
#define PB_DS_CC_HASH_BASE
Definition: assoc_container.hpp:166
#define PB_DS_LU_BASE
Definition: assoc_container.hpp:793
Collision-chaining hash.
Definition: tag_and_trait.hpp:141
Eq_Fn eq_fn
Definition: assoc_container.hpp:822
basic_hash_table(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
Definition: assoc_container.hpp:138
gp_hash_tag container_category
Definition: assoc_container.hpp:374
basic_branch()
Definition: assoc_container.hpp:567
basic_branch(T0 t0)
Definition: assoc_container.hpp:573
PB_DS_HASH_BASE base_type
Definition: assoc_container.hpp:107
void swap(trie &other)
Definition: assoc_container.hpp:780
#define PB_DS_BRANCH_BASE
Definition: assoc_container.hpp:528
virtual ~tree()
Definition: assoc_container.hpp:671
Probe_Fn probe_fn
Definition: assoc_container.hpp:378
gp_hash_table(const hash_fn &h, const eq_fn &e, const comb_probe_fn &cp, const probe_fn &p)
Definition: assoc_container.hpp:410
Update_Policy update_policy
Definition: assoc_container.hpp:823
#define PB_DS_TRIE_BASE
Definition: assoc_container.hpp:696
basic_hash_table(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4)
Definition: assoc_container.hpp:133
cc_hash_table(const hash_fn &h, const eq_fn &e, const comb_hash_fn &ch, const resize_policy &rp)
Definition: assoc_container.hpp:245
trie(const access_traits &t)
Definition: assoc_container.hpp:744
basic_hash_table(T0 t0, T1 t1, T2 t2)
Definition: assoc_container.hpp:126
gp_hash_table(const hash_fn &h)
Definition: assoc_container.hpp:386
Resize_Policy resize_policy
Definition: assoc_container.hpp:213
Definition: assoc_container.hpp:104
trie & operator=(const trie &other)
Definition: assoc_container.hpp:769
Definition: assoc_container.hpp:731
_ATraits access_traits
Element access traits type.
Definition: assoc_container.hpp:738
Definition: assoc_container.hpp:555
cc_hash_table(const hash_fn &h, const eq_fn &e)
Definition: assoc_container.hpp:228
lu_move_to_front_policy type
Dispatched type.
Definition: standard_policies.hpp:112
Definition: assoc_container.hpp:815
PB_DS_GP_HASH_BASE base_type
Definition: assoc_container.hpp:371
list_update(const list_update &other)
Definition: assoc_container.hpp:834
tree(It first, It last, const cmp_fn &c)
Definition: assoc_container.hpp:663
Eq_Fn eq_fn
Definition: assoc_container.hpp:376
trie(It first, It last, const access_traits &t)
Definition: assoc_container.hpp:758
Definition: standard_policies.hpp:76
basic_branch(T0 t0, T1 t1)
Definition: assoc_container.hpp:576
cc_hash_table(const hash_fn &h)
Definition: assoc_container.hpp:221
gp_hash_table(It first, It last)
Definition: assoc_container.hpp:430
Comb_Hash_Fn comb_hash_fn
Definition: assoc_container.hpp:214
gp_hash_table(It first, It last, const hash_fn &h, const eq_fn &e, const comb_probe_fn &cp, const probe_fn &p, const resize_policy &rp)
Definition: assoc_container.hpp:491
cc_hash_table(It first, It last, const hash_fn &h, const eq_fn &e, const comb_hash_fn &ch, const resize_policy &rp)
Definition: assoc_container.hpp:297
list_update_tag container_category
Definition: assoc_container.hpp:821
PB_DS_TREE_BASE base_type
Definition: assoc_container.hpp:638
basic_hash_table(T0 t0)
Definition: assoc_container.hpp:120
gp_hash_table(It first, It last, const hash_fn &h, const eq_fn &e, const comb_probe_fn &cp, const probe_fn &p)
Definition: assoc_container.hpp:475
Hash_Fn hash_fn
Definition: assoc_container.hpp:211
Hash_Fn hash_fn
Definition: assoc_container.hpp:375
Definition: assoc_container.hpp:635
basic_hash_table()
Definition: assoc_container.hpp:114
basic_branch(T0 t0, T1 t1, T2 t2, T3 t3)
Definition: assoc_container.hpp:582
Comb_Probe_Fn comb_probe_fn
Definition: assoc_container.hpp:377
basic_branch(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
Definition: assoc_container.hpp:596
void swap(gp_hash_table &other)
Definition: assoc_container.hpp:516
Definition: assoc_container.hpp:204
gp_hash_table(const hash_fn &h, const eq_fn &e)
Definition: assoc_container.hpp:393
gp_hash_table(It first, It last, const hash_fn &h, const eq_fn &e, const comb_probe_fn &cp)
Definition: assoc_container.hpp:461
cc_hash_table(const hash_fn &h, const eq_fn &e, const comb_hash_fn &ch)
Definition: assoc_container.hpp:236
virtual ~list_update()
Definition: assoc_container.hpp:838
trie(It first, It last)
Definition: assoc_container.hpp:751
trie()
Definition: assoc_container.hpp:740
tree & operator=(const tree &other)
Definition: assoc_container.hpp:674
basic_branch(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
Definition: assoc_container.hpp:591
Eq_Fn eq_fn
Definition: assoc_container.hpp:212
void swap(tree &other)
Definition: assoc_container.hpp:685
cc_hash_table(const cc_hash_table &other)
Definition: assoc_container.hpp:302
basic_hash_table(T0 t0, T1 t1, T2 t2, T3 t3)
Definition: assoc_container.hpp:129
PB_DS_LU_BASE base_type
Definition: assoc_container.hpp:818
Definition: assoc_container.hpp:368
basic_branch(T0 t0, T1 t1, T2 t2)
Definition: assoc_container.hpp:579
list_update(It first, It last)
Definition: assoc_container.hpp:831
cc_hash_table(It first, It last, const hash_fn &h, const eq_fn &e)
Definition: assoc_container.hpp:271
basic_hash_table(T0 t0, T1 t1)
Definition: assoc_container.hpp:123
tree()
Definition: assoc_container.hpp:644
void swap(exception_ptr &__lhs, exception_ptr &__rhs)
Definition: exception_ptr.h:160
gp_hash_table()
Default constructor.
Definition: assoc_container.hpp:382
List-update.
Definition: tag_and_trait.hpp:168
basic_hash_table(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
Definition: assoc_container.hpp:143
list_update & operator=(const list_update &other)
Definition: assoc_container.hpp:841
list_update()
Definition: assoc_container.hpp:825