| 724 | class Alloc = allocator<pair<const Key, Value>> |
| 725 | > |
| 726 | class unordered_multimap |
| 727 | { |
| 728 | public: |
| 729 | using key_type = Key; |
| 730 | using mapped_type = Value; |
| 731 | using value_type = pair<const key_type, mapped_type>; |
| 732 | using hasher = Hash; |
| 733 | using key_equal = Pred; |
| 734 | using allocator_type = Alloc; |
| 735 | using pointer = typename allocator_traits<allocator_type>::pointer; |
| 736 | using const_pointer = typename allocator_traits<allocator_type>::const_pointer; |
| 737 | using reference = value_type&; |
| 738 | using const_reference = const value_type&; |
| 739 | using size_type = size_t; |
| 740 | using difference_type = ptrdiff_t; |
| 741 | |
| 742 | using iterator = aux::hash_table_iterator< |
| 743 | value_type, reference, pointer, size_type |
| 744 | >; |
| 745 | using const_iterator = aux::hash_table_const_iterator< |
| 746 | value_type, const_reference, const_pointer, size_type |
| 747 | >; |
| 748 | using local_iterator = aux::hash_table_local_iterator< |
| 749 | value_type, reference, pointer |
| 750 | >; |
| 751 | using const_local_iterator = aux::hash_table_const_local_iterator< |
| 752 | value_type, const_reference, const_pointer |
| 753 | >; |
| 754 | |
| 755 | unordered_multimap() |
| 756 | : unordered_multimap{default_bucket_count_} |
| 757 | { /* DUMMY BODY */ } |
| 758 | |
| 759 | explicit unordered_multimap(size_type bucket_count, |
| 760 | const hasher& hf = hasher{}, |
| 761 | const key_equal& eql = key_equal{}, |
| 762 | const allocator_type& alloc = allocator_type{}) |
| 763 | : table_{bucket_count, hf, eql}, allocator_{alloc} |
| 764 | { /* DUMMY BODY */ } |
| 765 | |
| 766 | template<class InputIterator> |
| 767 | unordered_multimap(InputIterator first, InputIterator last, |
| 768 | size_type bucket_count = default_bucket_count_, |
| 769 | const hasher& hf = hasher{}, |
| 770 | const key_equal& eql = key_equal{}, |
| 771 | const allocator_type& alloc = allocator_type{}) |
| 772 | : unordered_multimap{bucket_count, hf, eql, alloc} |
| 773 | { |
| 774 | insert(first, last); |
| 775 | } |
| 776 | |
| 777 | unordered_multimap(const unordered_multimap& other) |
| 778 | : unordered_multimap{other, other.allocator_} |
| 779 | { /* DUMMY BODY */ } |
| 780 | |
| 781 | unordered_multimap(unordered_multimap&& other) |
| 782 | : table_{move(other.table_)}, allocator_{move(other.allocator_)} |
| 783 | { /* DUMMY BODY */ } |