1b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 2b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 3b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// The LLVM Compiler Infrastructure 4b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 5b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// This file is dual licensed under the MIT and the University of Illinois Open 6b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// Source Licenses. See LICENSE.TXT for details. 7b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 8b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 9b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 10b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// <unordered_map> 11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, 13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// class Alloc = allocator<pair<const Key, T>>> 14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// class unordered_multimap 15b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 16b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// local_iterator begin (size_type n); 17b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// local_iterator end (size_type n); 18b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// const_local_iterator begin (size_type n) const; 19b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// const_local_iterator end (size_type n) const; 20b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// const_local_iterator cbegin(size_type n) const; 21b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// const_local_iterator cend (size_type n) const; 22b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 23b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <unordered_map> 24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <string> 25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <cassert> 26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint main() 28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 30b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::unordered_multimap<int, std::string> C; 31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::pair<int, std::string> P; 32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef C::local_iterator I; 33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P a[] = 34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1, "one"), 36b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2, "two"), 37b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(3, "three"), 38b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(4, "four"), 39b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1, "four"), 40b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2, "four"), 41b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner }; 42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C c(a, a + sizeof(a)/sizeof(a[0])); 43b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(c.bucket_count() == 7); 44b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C::size_type b = c.bucket(0); 45b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I i = c.begin(b); 46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I j = c.end(b); 47b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 48b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 49b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(1); 50b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 51b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 52b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 2); 53b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 1); 54b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "one"); 55b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner ++i; 56b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 1); 57b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 58b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i->first = 2; 59b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 60b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(2); 61b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 62b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 63b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 2); 64b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 2); 65b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "two"); 66b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner ++i; 67b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 2); 68b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 69b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 70b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(3); 71b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 72b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 73b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 74b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 3); 75b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "three"); 76b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 77b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(4); 78b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 79b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 80b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 81b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 4); 82b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 83b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 84b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(5); 85b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 86b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 87b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 88b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 89b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(6); 90b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 91b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 92b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 93b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 94b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 95b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::unordered_multimap<int, std::string> C; 96b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::pair<int, std::string> P; 97b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef C::const_local_iterator I; 98b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P a[] = 99b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 100b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1, "one"), 101b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2, "two"), 102b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(3, "three"), 103b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(4, "four"), 104b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1, "four"), 105b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2, "four"), 106b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner }; 107b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner const C c(a, a + sizeof(a)/sizeof(a[0])); 108b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(c.bucket_count() == 7); 109b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C::size_type b = c.bucket(0); 110b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I i = c.begin(b); 111b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I j = c.end(b); 112b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 113b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 114b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(1); 115b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 116b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 117b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 2); 118b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 1); 119b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "one"); 120b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner ++i; 121b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 1); 122b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 123b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 124b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(2); 125b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 126b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 127b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 2); 128b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 2); 129b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "two"); 130b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner ++i; 131b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 2); 132b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 133b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 134b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(3); 135b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 136b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 137b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 138b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 3); 139b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "three"); 140b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 141b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(4); 142b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 143b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 144b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 145b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 4); 146b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 147b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 148b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(5); 149b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 150b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 151b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 152b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 153b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(6); 154b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.begin(b); 155b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.end(b); 156b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 157b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 158b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 159b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::unordered_multimap<int, std::string> C; 160b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::pair<int, std::string> P; 161b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef C::const_local_iterator I; 162b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P a[] = 163b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 164b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1, "one"), 165b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2, "two"), 166b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(3, "three"), 167b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(4, "four"), 168b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1, "four"), 169b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2, "four"), 170b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner }; 171b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C c(a, a + sizeof(a)/sizeof(a[0])); 172b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(c.bucket_count() == 7); 173b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C::size_type b = c.bucket(0); 174b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I i = c.cbegin(b); 175b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I j = c.cend(b); 176b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 177b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 178b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(1); 179b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 180b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 181b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 2); 182b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 1); 183b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "one"); 184b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner ++i; 185b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 1); 186b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 187b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 188b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(2); 189b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 190b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 191b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 2); 192b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 2); 193b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "two"); 194b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner ++i; 195b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 2); 196b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 197b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 198b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(3); 199b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 200b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 201b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 202b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 3); 203b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "three"); 204b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 205b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(4); 206b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 207b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 208b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 209b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 4); 210b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 211b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 212b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(5); 213b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 214b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 215b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 216b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 217b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(6); 218b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 219b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 220b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 221b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 222b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 223b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::unordered_multimap<int, std::string> C; 224b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::pair<int, std::string> P; 225b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef C::const_local_iterator I; 226b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P a[] = 227b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 228b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1, "one"), 229b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2, "two"), 230b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(3, "three"), 231b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(4, "four"), 232b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(1, "four"), 233b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner P(2, "four"), 234b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner }; 235b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner const C c(a, a + sizeof(a)/sizeof(a[0])); 236b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(c.bucket_count() == 7); 237b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner C::size_type b = c.bucket(0); 238b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I i = c.cbegin(b); 239b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner I j = c.cend(b); 240b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 241b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 242b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(1); 243b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 244b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 245b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 2); 246b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 1); 247b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "one"); 248b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner ++i; 249b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 1); 250b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 251b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 252b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(2); 253b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 254b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 255b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 2); 256b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 2); 257b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "two"); 258b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner ++i; 259b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 2); 260b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 261b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 262b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(3); 263b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 264b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 265b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 266b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 3); 267b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "three"); 268b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 269b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(4); 270b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 271b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 272b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 1); 273b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->first == 4); 274b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(i->second == "four"); 275b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 276b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(5); 277b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 278b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 279b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 280b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 281b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner b = c.bucket(6); 282b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner i = c.cbegin(b); 283b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner j = c.cend(b); 284b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::distance(i, j) == 0); 285b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 286b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 287