- <
iteratorbegin();
>Эффекты: Возвращает итератор, указывающий на начало<unordered_set
>.
Сложность: Амортизированное постоянное время. Наихудший случай (пустый<unordered_set
>): О (это->bucket_count())
Бросок: Ничего.
- <
const_iteratorbegin()const;
>Эффекты: Возвращает const_iterator, указывающий на начало<unordered_set
>.
Сложность: Амортизированное постоянное время. Худший случай (пустый<unordered_set
>): О (это->bucket_count())
Бросок: Ничего.
- <
const_iteratorcbegin()const;
>Эффекты: Возвращает const_iterator, указывающий на начало<unordered_set
>.
Сложность: Амортизированное постоянное время. Наихудший случай (пустый<unordered_set
>): О (это->bucket_count())
Бросок: Ничего.
- <
iteratorend();
>Эффекты: Возвращает итератор, указывающий на конец<unordered_set
>.
Сложность: Постоянная.
Бросает: Ничего.
- <
const_iteratorend()const;
>Эффекты: Возвращает const_iterator, указывающий на конец<unordered_set
>.
Сложность: Постоянная.
Бросает: Ничего.
- <
const_iteratorcend()const;
>Эффекты: Возвращает const_iterator, указывающий на конец<unordered_set
>.
Сложность: Константа.
Бросает: Ничего.
- <
hasherhash_function()const;
>Эффекты: Возвращает хешерный объект, используемый<unordered_set
>.
Сложность: Постоянная.
Бросает: Если кидает копи-конструктор.
- <
key_equalkey_eq()const;
>Эффекты: Возвращает ключ_равный объект, используемый<unordered_set
>.
Сложность: Постоянная.
Бросает: Если бросит копи-конструктор key_equal.
- <
boolempty()const;
>Эффекты: Возвращается, если контейнер пуст.
Сложность: если размер постоянного времени и<cache_begin
>опции отключены, среднее постоянное время (наихудший случай, с пустым() == истинно: O(this->bucket_count()). В противном случае константа.
Броски: Ничего.
- <
size_typesize()const;
>: Возвращает количество элементов, хранящихся в<unordered_set
>.
Сложность: Линейный к элементам, содержащимся в *, если<constant_time_size
>является ложным. В другое время.
Бросок: Ничего.
- <
voidswap(hashtable&other);
>Требуется: Хэшер и функция равенства неквалифицированный вызов свопа не должны бросаться.
Эффекты: Обменяйте содержимое двух неупорядоченных наборов. Свопс также содержит массив ведра и равенство и хешер-функторы.
Сложность: Постоянная.
Броски: Если своп() вызывает сравнение или хеш-функторы, найденные с использованием ADL-броска. Базовая гарантия.
- <
template<typenameCloner,typenameDisposer>
voidclone_from(consthashtable&src,Clonercloner,Disposerdisposer);
>Требует: Диспетчер::оператор()(указатель) не должен бросать Клонер должен уступить узлам, которые сравниваются равными и производят тот же хеш, что и исходный узел.
Эффекты: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src, вызывающего Клонера::оператор()(const_reference) и вставляет их на *это. Функция хеширования и предикат равенства копируются из источника.
Если вариант<store_hash
>верен, этот метод не использует хеш-функцию.
Если какая-либо операция выполняется, все клонированные элементы являются несвязанными и утилизируются, вызывая Диспетчер::оператор()(указатель).
Сложность: Линейный стертый плюс вставленные элементы.
Бросок: Если клонер или хешер бросок или хеш или равенство предикат копирования бросок. Базовая гарантия.
- <
template<typenameCloner,typenameDisposer>
voidclone_from(hashtable&&src,Clonercloner,Disposerdisposer);
>Требует: Диспетчер::оператор()(указатель) не должен бросать Клонер должен уступить узлам, которые сравнивают равные и производят тот же хеш, что и исходный узел.
Эффекты: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src, вызывающего Клонера::оператор()(ссылка) и вставляет их на *это. Функция хеширования и предикат равенства копируются из источника.
Если вариант<store_hash
>верен, этот метод не использует хеш-функцию.
Если какая-либо операция выполняется, все клонированные элементы являются несвязанными и утилизируются, вызывая Диспетчер::оператор()(указатель).
Сложность: Линейный стертый плюс вставленные элементы.
Бросок: Если клонер или хешер бросок или хеш или равенство предикат копирования бросок. Базовая гарантия.
- <
iteratorinsert_equal(referencevalue);
>Требуется: значение должно быть lvalue
Эффекты: Вставить значение в<unordered_set
>.
Возврат: Итератор для вставленного значения.
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Бросок: Если бросает внутренний хешер или функтор равенства. Сильная гарантия.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
- <
template<typenameIterator>voidinsert_equal(Iteratorb,Iteratore);
>Требуется: Ссылочный итератор должен давать значение l типа value_type.
Эффекты: Эквивалентно этому->insert_equal(t) для каждого элемента в [b, e]
Сложность: Средний случай O(N), где N - расстояние (b, e). Наихудший случай O(N*this->size()).
Бросает: Если бросает внутренний хешер или функтор равенства. Основная гарантия.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
- <
std::pair<iterator,bool>insert_unique(referencevalue);
>Требуется: значение должно быть lvalue
Эффекты: Пытается вставить значение в<unordered_set
>.
Возврат: Если значение еще не присутствует, вставляет его и возвращает пару, содержащую итератор, к новому значению и истинному. При наличии эквивалентного значения возвращает пару, содержащую итератор, к уже существующему значению и ложному.
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Бросок: Если бросает внутренний хешер или функтор равенства. Сильная гарантия.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
- <
template<typenameIterator>voidinsert_unique(Iteratorb,Iteratore);
>Требуется: Ссылочный итератор должен давать значение l типа value_type.
Эффекты: Эквивалентно этому->insert_unique(t) для каждого элемента в [b, e]
Сложность: Средний случай O(N), где N - расстояние (b, e). Наихудший случай O(N*this->size()).
Бросок: Если бросает внутренний хешер или функтор равенства. Основная гарантия.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
- <
template<typenameKeyType,typenameKeyHasher,typenameKeyEqual>
std::pair<iterator,bool>
insert_unique_check(constKeyType&key,KeyHasherhash_func,
KeyEqualequal_func,insert_commit_data&commit_data);
>Требуется: «hash_func» должен представлять собой хеш-функцию, которая индуцирует те же хеш-значения, что и хранимый хэш. Разница в том, что «hash_func» хэширует заданный ключ вместо значения_типа.
«equal_func» должна быть функцией равенства, которая вызывает то же равенство, что и ключевое_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.
Эффекты: Проверяет, можно ли вставить значение в<unordered_set
>, используя предоставленный пользователем ключ вместо самого значения.
Возвращение: Если существует эквивалентное значение, то пара, содержащая итератор, возвращается к уже существующей стоимости и ложна. Если значение может быть вставлено, возвращается истинное значение в возвращенной паре boolean и заполняет «commit_data», которое предназначено для использования с функцией «insert_commit».
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Бросок: Если хеш_func или равно_func бросок. Сильная гарантия.
Примечания: Эта функция используется для повышения производительности при построении стоимостного типа: при наличии эквивалентного значения построенный объект должен быть отброшен. Много раз часть узла, которая используется для наложения хэша или равенства, намного дешевле в конструировании, чем значение_тип, и эта функция предлагает возможность использовать эту часть для проверки того, будет ли вставка успешной.
Если проверка прошла успешно, пользователь может построить значение_тип и использовать «insert_commit» для вставки объекта в постоянное время.
"commit_data" остается действительным для последующего "insert_commit" только в том случае, если из<unordered_set
>не вставлено и не стерто больше объектов
. После успешного перенастройки вставка_commit_data остается в силе.
- <
std::pair<iterator,bool>
insert_unique_check(constkey_type&key,insert_commit_data&commit_data);
>Эффекты: Проверяет, можно ли вставить значение в<unordered_set
>, используя предоставленный пользователем ключ вместо самого значения.
Возвращение: Если существует эквивалентное значение, то пара, содержащая итератор, возвращается к уже существующей стоимости и ложна. Если значение может быть вставлено, возвращается истинное значение в возвращенной паре boolean и заполняет «commit_data», которое предназначено для использования с функцией «insert_commit».
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Бросок: Если есть хэшер или key_compare бросок. Сильная гарантия.
Примечания: Эта функция используется для повышения производительности при построении стоимостного типа: при наличии эквивалентного значения построенный объект должен быть отброшен. Много раз часть узла, которая используется для наложения хэша или равенства, намного дешевле в конструировании, чем значение_тип, и эта функция предлагает возможность использовать эту часть для проверки того, будет ли вставка успешной.
Если проверка прошла успешно, пользователь может построить значение_тип и использовать «insert_commit» для вставки объекта в постоянное время.
"commit_data" остается действительным для последующего "insert_commit" только в том случае, если из<unordered_set
>не вставлено и не стерто больше объектов
. После успешного перенастройки вставка_commit_data остается в силе.
- <
iteratorinsert_unique_commit(referencevalue,
constinsert_commit_data&commit_data);
>Требуется: Значение должно быть значением типа value_type. commit_data должны быть получены из предыдущего вызова на «insert_check». Никакие объекты не должны были вставляться или стираться из<unordered_set
>между «insert_check», который заполнил «commit_data» и призывом «insert_commit».
: Вставляет значение в<unordered_set
>, используя информацию, полученную из «commit_data», которую заполнил предыдущий «insert_check».
Возвращение: Итератор вновь вставленного объекта.
Сложность: Постоянное время.
Бросает: Ничего.
Примечания: Эта функция имеет смысл только в том случае, если ранее была выполнена «insert_check» для заполнения «commit_data». Не следует вставлять или стирать значение между вызовами «insert_check» и «insert_commit».
После успешного перенастройки вставка_commit_data остается в силе.
- <
voiderase(const_iteratori);
>Эффекты: Стирает элемент, на который указывает i.
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Бросок: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертый элемент. Деструкторы не называются.
- <
voiderase(const_iteratorb,const_iteratore);
>Эффекты: Уничтожает диапазон, указанный на b-конце e.
Сложность: Средний случай O(расстояние(b, e)), наихудший случай O(this->size()).
Бросок: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
size_typeerase(constkey_type&key);
>Эффекты: Стирает все элементы с заданным значением.
Возврат: Количество стертых элементов.
Сложность: Средний случай O(this->count(value)). Наихудший случай O(this->size()).
Бросок: Если бросает внутренний хешер или функтор равенства. Основная гарантия.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
template<typenameKeyType,typenameKeyHasher,typenameKeyEqual>
size_typeerase(constKeyType&key,KeyHasherhash_func,
KeyEqualequal_func);
>Требуется: «hash_func» должен представлять собой хеш-функцию, которая индуцирует те же хеш-значения, что и хранимый хэш. Разница в том, что «hash_func» хэширует данный ключ вместо значения_type.
«equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.
Эффекты: Стирает все элементы, имеющие одинаковый хеш и сравнивает с заданным ключом.
Возвращение: Количество стертых элементов.
Сложность: Средний случай O(this->count(value)). Наихудший случай O(this->size()).
Бросок: Если хеш_func или равно_func бросок. Основная гарантия.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
template<typenameDisposer>
voiderase_and_dispose(const_iteratori,Disposerdisposer);
>Требуется: Диспетчер::оператор()(пойнтеры) не должен бросать.
Эффекты: Стирает элемент, на который указывает i. Утилизатор::оператор()(указатель) вызывается для удаленного элемента.
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Бросок: Ничего.
Примечание: Инвалидирует итераторы на стертые элементы.
- <
template<typenameDisposer>
voiderase_and_dispose(const_iteratorb,const_iteratore,
Disposerdisposer);
>Требует: Диспетчер::оператор()(указатель) не должен бросать.
Эффекты: Уничтожает диапазон, указанный на b-конце e. Утилизатор::оператор()(указатель) вызывается для удаленных элементов.
Сложность: Средний случай O(расстояние(b, e)), наихудший случай O(this->size()).
Бросок: Ничего.
Примечание: Инвалидирует итераторы на стертые элементы.
- <
template<typenameDisposer>
size_typeerase_and_dispose(constkey_type&key,Disposerdisposer);
>Требует: Диспетчер::оператор()(указатель) не должен бросать.
Эффекты: Стирает все элементы с заданным значением. Диспозитор::оператор()(указатель) вызывается для удаленных элементов.
Возвращение: Количество стертых элементов.
Сложность: Средний случай O(this->count(value)). Наихудший случай O(this->size()).
Бросок: Если бросает внутренний хешер или функтор равенства. Основная гарантия.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
template<typenameKeyType,typenameKeyHasher,typenameKeyEqual,
typenameDisposer>
size_typeerase_and_dispose(constKeyType&key,KeyHasherhash_func,
KeyEqualequal_func,Disposerdisposer);
>Требует: Диспетчер::оператор()(указатель) не должен бросать.
Эффекты: Стирает все элементы заданным ключом. Сравнительный функтор «equal_func». Диспозитор::оператор()(указатель) вызывается для удаленных элементов.
Возвращение: Число стертых элементов.
Сложность: Средний случай O(this->count(value)). Наихудший случай O (это->size()).
Бросок: Если хеш_func или равно_func бросок. Основная гарантия.
Примечание: Инвалидирует итераторы на стертые элементы.
- <
voidclear();
>Эффекты: Стирает все элементы.
Сложность: Линейный по количеству элементов на контейнере. Если это безопасный режим или авто-разъединить значение_тип. Постоянное время иначе.
Бросает: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
template<typenameDisposer>voidclear_and_dispose(Disposerdisposer);
>Требует: Диспетчер::оператор()(указатель) не должен бросать.
: Стирает все элементы.
Сложность: Линейный по количеству элементов на контейнере. Диспозитор::оператор()(указатель) вызывается для удаленных элементов.
Бросок: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
size_typecount(constkey_type&key)const;
>Эффекты: Возвращает число содержащихся элементов с заданным значением
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Бросок: Если бросает внутренний хешер или функтор равенства.
- <
template<typenameKeyType,typenameKeyHasher,typenameKeyEqual>
size_typecount(constKeyType&key,KeyHasherhash_func,
KeyEqualequal_func)const;
>Требуется: «hash_func» должен представлять собой хеш-функцию, которая индуцирует те же хеш-значения, что и хранимый хэш. Разница в том, что «hash_func» хэширует данный ключ вместо значения_типа.
«equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.
Эффекты: Возвращает количество содержащихся элементов с заданным ключом
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Бросок: Если хеш_функция или равный бросок.
- <
iteratorfind(constkey_type&key);
>Эффекты: Найденный итератор к первому элементу равен «значению» или концу (), если этот элемент не существует.
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Бросок: Если бросает внутренний хешер или функтор равенства.
- <
template<typenameKeyType,typenameKeyHasher,typenameKeyEqual>
iteratorfind(constKeyType&key,KeyHasherhash_func,KeyEqualequal_func);
>Требуется: «hash_func» должен быть хеш-функцией, которая индуцирует те же хеш-значения, что и хранимый хеш-хэш. Разница в том, что «hash_func» хэширует заданный ключ вместо значения_типа.
«equal_func» должна быть функцией равенства, которая вызывает то же равенство, что и ключевое_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.
Эффекты: Найден итератор к первому элементу, ключ которого является «ключом» в соответствии с заданным хеш-функтором и функтором равенства или концом (), если этот элемент не существует.
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Бросок: Если хеш_func или равно_func бросок.
Примечание: Эта функция используется, когда построение значения_типа является дорогостоящим, и значение_тип можно сравнить с более дешевым ключевым типом. Обычно этот ключ является частью значения_типа.
- <
const_iteratorfind(constkey_type&key)const;
>Эффекты: Найдет const_iterator к первому элементу, ключ которого является «ключом» или концом (), если этот элемент не существует.
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Броски: Если бросает внутренний хешер или функтор равенства.
- <
template<typenameKeyType,typenameKeyHasher,typenameKeyEqual>
const_iterator
find(constKeyType&key,KeyHasherhash_func,KeyEqualequal_func)const;
>Требуется: «hash_func» должен быть хеш-функцией, которая индуцирует те же хеш-значения, что и хранимый хеш-хэш. Разница в том, что «hash_func» хэширует данный ключ вместо значения_типа.
«equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.
Эффекты: Найден итератор к первому элементу, ключ которого является «ключом» в соответствии с заданным хешером и функтором равенства или концом (), если этот элемент не существует.
Сложность: Средний случай O(1), наихудший случай O(this->size()).
Бросок: Если хеш_func или равно_func бросок.
Примечание: Эта функция используется, когда построение значения_типа является дорогостоящим, и значение_тип можно сравнить с более дешевым ключевым типом. Обычно этот ключ является частью значения_типа
.
- <
std::pair<iterator,iterator>equal_range(constkey_type&key);
>Эффекты: Возвращает диапазон, содержащий все элементы со значениями, эквивалентными значению. Возвращает std::make_pair(this->end(), this->end()), если таких элементов не существует.
Сложность: Средний случай O(this->count(value)). Наихудший случай O (это->size()).
Бросок: Если бросает внутренний хешер или функтор равенства.
- <
template<typenameKeyType,typenameKeyHasher,typenameKeyEqual>
std::pair<iterator,iterator>
equal_range(constKeyType&key,KeyHasherhash_func,KeyEqualequal_func);
>Требуется: «hash_func» должен быть хеш-функцией, которая индуцирует те же хеш-значения, что и хранимый хэш. Разница в том, что «hash_func» хэширует данный ключ вместо значения_типа.
«equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.
Эффекты: Возвращает диапазон, содержащий все элементы с эквивалентными ключами. Возвращает std::make_pair(this->end(), this->end()), если таких элементов не существует.
Сложность: Средний случай O(this->count(key, hash_func, equal_func)). Наихудший случай O(this->size()).
Бросок: Если хеш_func или равно_func бросок.
Примечание: Эта функция используется, когда построение значения_типа является дорогостоящим, и значение_тип можно сравнить с более дешевым ключевым типом. Обычно этот ключ является частью значения_типа
.
- <
std::pair<const_iterator,const_iterator>
equal_range(constkey_type&key)const;
>Эффекты: Возвращает диапазон, содержащий все элементы со значениями, эквивалентными значению. Возвращает std::make_pair(this->end(), this->end()), если таких элементов не существует.
Сложность: Средний случай O(this->count(value)). Наихудший случай O(this->size()).
Бросок: Если бросает внутренний хешер или функтор равенства.
- <
template<typenameKeyType,typenameKeyHasher,typenameKeyEqual>
std::pair<const_iterator,const_iterator>
equal_range(constKeyType&key,KeyHasherhash_func,KeyEqualequal_func)const;
>Требуется: «hash_func» должен быть хеш-функцией, которая индуцирует те же хеш-значения, что и хранимый хеш-хэш. Разница в том, что «hash_func» хэширует данный ключ вместо значения_type.
«equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.
Эффекты: Возвращает диапазон, содержащий все элементы с эквивалентными ключами. Возвращает std::make_pair(this->end(), this->end()), если таких элементов не существует.
Сложность: Средний случай O(this->count(key, hash_func, equal_func)). Наихудший случай O(this->size()).
Броски: Если хешер или равнофункциональный бросок.
Примечание: Эта функция используется, когда построение значения_типа является дорогостоящим, и значение_тип можно сравнить с более дешевым ключевым типом. Обычно этот ключ является частью значения_типа
.
- <
iteratoriterator_to(referencevalue);
>Требуется: Значение должно быть lvalue и должно быть в<unordered_set
>соответствующего типа. В противном случае поведение не определено.
Эффекты: Возврат: действительный итератор, принадлежащий<unordered_set
>, который указывает на значение
Сложность:
Бросок: Если выполняется внутренняя хеш-функция.
- <
const_iteratoriterator_to(const_referencevalue)const;
>Требуется: Значение должно быть lvalue и должно быть в<unordered_set
>соответствующего типа. Иначе поведение не определено.
Эффекты: Возврат: действительный const_iterator, принадлежащий<unordered_set
>, который указывает на значение
Сложность:
Бросок: Если выполняется внутренняя хеш-функция.
- <
local_iteratorlocal_iterator_to(referencevalue);
>Требуется: Значение должно быть lvalue и должно быть в<unordered_set
>соответствующего типа. В противном случае поведение не определено.
Эффекты: Возврат: действительный локальный_iterator, принадлежащий<unordered_set
>, который указывает на значение
Сложность:
Бросок: Ничего.
- <
const_local_iteratorlocal_iterator_to(const_referencevalue)const;
>Требуется: Значение должно быть lvalue и должно быть в<unordered_set
>соответствующего типа. В противном случае поведение не определено.
Эффекты: Возврат: действительный const_local_iterator, принадлежащий<unordered_set
>, который указывает на значение
Сложность: Константа.
Бросает: Ничего.
- <
size_typebucket_count()const;
>Эффекты: Возвращает количество ведер, пропущенных в конструкторе, или последнюю функцию рехэша.
Сложность: Постоянная.
Броски: Ничего.
- <
size_typebucket_size(size_typen)const;
>Требует: n находится в диапазоне [0, это->bucket_count()]
: Возвращает число элементов в n-м ведре.
Сложность: Постоянная.
Бросок: Ничего.
- <
size_typebucket(constkey_type&k)const;
>Эффекты: Возвращает индекс ведра, в котором были бы найдены элементы с ключами, эквивалентными k, если бы такой элемент существовал.
Сложность: Постоянная.
Бросает: Если хеш-функтор бросает.
Примечание: возвращаемое значение находится в диапазоне [0, this->bucket_count()].
- <
template<typenameKeyType,typenameKeyHasher>
size_typebucket(constKeyType&k,KeyHasherhash_func)const;
>Требуется: «hash_func» должен быть хеш-функцией, которая индуцирует те же хеш-значения, что и хранимый хэш. Разница в том, что «hash_func» хэширует данный ключ вместо значения_типа.
Эффекты: Возвращает индекс ведра, в котором были бы найдены элементы с ключами, эквивалентными k, если бы такой элемент существовал.
Сложность:
Бросок: Если хеш_функция бросает.
Примечание: возвращаемое значение находится в диапазоне [0, this->bucket_count()].
- <
bucket_ptrbucket_pointer()const;
>Эффекты: Возвращает указатель массива ковша, прошедший в конструкторе, или последнюю функцию рехэша.
Сложность: Постоянная.
Бросает: Ничего.
- <
local_iteratorbegin(size_typen);
>Требует: n находится в диапазоне [0, это->bucket_count()].
Эффекты: Возвращает локальный_iterator, указывающий на начало последовательности, хранящейся в ведре n.
Сложность: Постоянная.
Броски:
Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.
- <
const_local_iteratorbegin(size_typen)const;
>Требует: n находится в диапазоне [0, это->bucket_count()].
Эффекты: Возвращает const_local_iterator, указывающий на начало последовательности, хранящейся в ведре n.
Сложность:
Бросок:
Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.
- <
const_local_iteratorcbegin(size_typen)const;
>Требует: n находится в диапазоне [0, это->bucket_count()]
Эффекты: Возвращает const_local_iterator, указывающий на начало последовательности, хранящейся в ведре n.
Сложность: Постоянная.
Бросает: Ничего.
Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.
- <
local_iteratorend(size_typen);
>Требуется: n находится в диапазоне [0, this->bucket_count()).
Эффекты: Возвращает локальный_iterator, указывающий на конец последовательности, хранящейся в ведре n.
Сложность: Постоянная.
Бросает: Ничего.
Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.
- <
const_local_iteratorend(size_typen)const;
>Требуется: n находится в диапазоне [0, this->bucket_count()).
Эффекты: Возвращает const_local_iterator, указывающий на конец последовательности, хранящейся в ведре n.
Сложность: Константа.
Броски: Ничего.
Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.
- <
const_local_iteratorcend(size_typen)const;
>Требует: n находится в диапазоне [0, это->bucket_count()).
Эффекты: Возвращает const_local_iterator, указывающий на конец последовательности, хранящейся в ведре n.
Сложность:
Бросок:
Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.
- <
voidrehash(constbucket_traits&new_bucket_traits);
>Требуется: New_bucket_traits может содержать указатель на новый массив ковша или такой же, как старый массив ковша с другой длиной. new_size — длина массива, на который указывают new_buckets. Если new_bucket_traits.bucket_begin() == this->bucket_pointer() new_bucket_traits.bucket_count() может быть больше или меньше этого->bucket_count().
Эффекты: Если<new_bucket_traits.bucket_begin() == this->bucket_pointer()
>ложно, отсоединяют значения от старого ведра и вставляют затем в новое согласно хеш-значению значений.
Если<new_bucket_traits.bucket_begin() == this->bucket_pointer()
>верно, то реализации максимально избегают движущихся значений.
Черты ведра удерживаются *это присваивается от new_bucket_traits. Если контейнер сконфигурирован как incremental<>, разделительное ведро устанавливается на новый счет bucket_count().
Если вариант<store_hash
>верен, этот метод не использует хеш-функцию. В случае ложности реализация пытается минимизировать вызовы к хеш-функции (например, один раз для эквивалентных значений, если оптимизация_multikeyявляется истинной).
Если рехэш успешно обновляет внутреннюю<bucket_traits
>с новыми_bucket_traits.
Сложность: Средний случай линейный в этом->size(), худший случай квадратичный.
Бросок: Если кидает функтор гашера. Базовая гарантия.
- <
voidfull_rehash();
>Примечание: Эта функция используется, когда ключи от вставленных элементов изменены (например, изменение языка, когда ключ является строкой), но уникальность и хеш-свойства сохраняются, поэтому быстрое полное повторение восстанавливает инварианты для этого без извлечения и повторного включения всех элементов снова.
Требуется: Звонки, производимые в хеш-функцию, не должны изменять свойства уникальности уже вставленных элементов. Если хешер(ключ1) == хешер(ключ2) был верен при вставке элементов, он должен быть верен при вызовах, произведенных при выполнении этой функции.
Ключ_равный не называется внутри этой функции, поэтому предполагается, что ключ_равный(значение1, значение2) должен давать те же результаты, что и раньше для вставленных элементов.
Эффекты: Перерабатывает все значения, удерживаемые этим, пересчитывая их хеш-значения и перераспределяя их через ведра.
Если опция<store_hash
>верна, этот метод использует функцию хеширования и обновляет сохраненное значение хеширования.
Сложность: Средний случай линейный в этом->size(), худший случай квадратичный.
Бросок: Если кидает функтор гашера. Базовая гарантия.
- <
boolincremental_rehash(boolgrow=true);
>Требуется:
:
Сложность:
Броски:
Примечание: этот метод доступен только при активации опции incremental.
Рост
- <
boolincremental_rehash(constbucket_traits&new_bucket_traits);
>Эффекты: Если new_bucket_traits.bucket_count() не является this->bucket_count()/2 или this->bucket_count()*2, или this->split_bucket()!= new_bucket_traits.bucket_count() возвращается ложным и ничего не делает.
В противном случае копия присваивает внутренним<bucket_traits
>новые черты ковша и переносит все предметы из старых ведер в новые.
Сложность: Линейный размер().
Бросает: Ничто
Примечание: этот метод доступен только при активации опции incremental.
- <
size_typesplit_count()const;
>Требуется: инкрементный<>опция должна быть установлена
Эффекты: возвращает текущее число деления
Сложность: Постоянная
Бросает: Ничего