- <
iteratorbegin();
>Эффекты: Возвращает итератор, указывающий на начало контейнера.
Сложность: Постоянная.
Бросает: Ничего.
- <
const_iteratorbegin()const;
>Эффекты: Возвращает const_iterator, указывающий на начало контейнера.
Сложность: Постоянная.
Бросает: Ничего.
- <
const_iteratorcbegin()const;
>Эффекты: Возвращает const_iterator, указывающий на начало контейнера.
Сложность: Постоянная.
Броски: Ничего.
- <
iteratorend();
>Эффекты: Возвращает итератор, указывающий на конец контейнера.
Сложность: Постоянная.
Бросает: Ничего.
- <
const_iteratorend()const;
>Эффекты: Возвращает const_iterator, указывающий на конец контейнера.
Сложность: Постоянная.
Бросает: Ничего.
- <
const_iteratorcend()const;
>Эффекты: Возвращает const_iterator, указывающий на конец контейнера.
Сложность: Постоянная.
Бросает: Ничего.
- <
reverse_iteratorrbegin();
>Эффекты: Возвращает обратный_iterator, указывающий на начало обратного контейнера.
Сложность: Постоянная.
Бросает: Ничего.
- <
const_reverse_iteratorrbegin()const;
>Эффекты: Возвращает const_reverse_iterator, указывающий на начало обратного контейнера.
Сложность: Постоянная.
Броски: Ничего.
- <
const_reverse_iteratorcrbegin()const;
>Эффекты: Возвращает const_reverse_iterator, указывающий на начало обратного контейнера.
Сложность: Постоянная.
Броски: Ничего.
- <
reverse_iteratorrend();
>Эффекты: Возвращает обратный_iterator, указывающий на конец обратного контейнера.
Сложность: Постоянная.
Броски: Ничего.
- <
const_reverse_iteratorrend()const;
>Эффекты: Возвращает const_reverse_iterator, указывающий на конец обратного контейнера.
Сложность: Постоянная.
Броски: Ничего.
- <
const_reverse_iteratorcrend()const;
>Эффекты: Возвращает const_reverse_iterator, указывающий на конец обратного контейнера.
Сложность: Постоянная.
Броски: Ничего.
- <
iteratorroot();
>Эффекты: Возвращает итератор, указывающий на корневой узел контейнера или конец(), если он не присутствует.
Сложность: Постоянная.
Броски: Ничего.
- <
const_iteratorroot()const;
>Эффекты: Возвращает const_iterator, указывающий на корневой узел контейнера или кенд(), если он отсутствует.
Сложность: Постоянная.
Бросает: Ничего.
- <
const_iteratorcroot()const;
>Эффекты: Возвращает const_iterator, указывающий на корневой узел контейнера или кенд(), если он отсутствует.
Сложность: Постоянная.
Броски: Ничего.
- <
key_comparekey_comp()const;
>Эффекты: Возвращает объект key_compare, используемый контейнером.
Сложность: Постоянная.
Броски: Если бросит key_compare копи-конструктор.
- <
value_comparevalue_comp()const;
>Эффекты: Возвращает значение_сравнительный объект, используемый контейнером.
Сложность: Постоянная.
Бросает: Если value_compare копи-конструктор бросает.
- <
boolempty()const;
>Эффекты: Возвращается, если контейнер пуст.
Сложность: Постоянная.
Броски: Ничего.
- <
size_typesize()const;
>Эффекты: Возвращает количество элементов, хранящихся в контейнере.
Сложность: Линейный к элементам, содержащимся в *это, если опция постоянного размера отключена. Постоянное время иначе.
Бросает: Ничего.
- <
voidswap(avl_multiset&other);
>Эффекты: Изменить содержимое двух контейнеров.
Сложность: Постоянная.
Броски: Если сравнительный своп функтора бросает вызов.
- <
template<typenameCloner,typenameDisposer>
voidclone_from(constavl_multiset&src,Clonercloner,Disposerdisposer);
>Требуется: Диспетчер::оператор()(поинт) не должен бросать. Клонер должен уступить узлам, эквивалентным исходным узлам.
Эффекты: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src, вызывающего Клонера::оператор()(const_reference) и вставляет их на *это. Копирует предикат из исходного контейнера.
Если клонер бросает, все клонированные элементы несвязаны и расположены, вызывая Диспозитор::оператор()(указатель).
Сложность: Линейный стертый плюс вставленные элементы.
Бросок: Если клонер бросает или предикат копирования, задание бросает. Базовая гарантия.
- <
template<typenameCloner,typenameDisposer>
voidclone_from(avl_multiset&&src,Clonercloner,Disposerdisposer);
>Требуется: Диспетчер::оператор()(указатель) не должен бросать. Клонер должен уступить узлам, эквивалентным исходным узлам.
Эффекты: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src, вызывающего Клонера::оператор()(ссылка) и вставляет их на *это. Копирует предикат из исходного контейнера.
Если клонер бросает, все клонированные элементы несвязаны и расположены, вызывая Диспозитор::оператор()(указатель).
Сложность: Линейный стертый плюс вставленные элементы.
Бросок: Если клонер бросает или предикат копирования, задание бросает. Основная гарантия.
Примечание: Эта версия может модифицировать исходный контейнер, полезный для реализации семантики перемещения.
- <
iteratorinsert(referencevalue);
>Требуется: Значение должно быть lvalue
Эффекты: Вставляет значение в контейнер перед верхней границей.
Сложность: Средняя сложность для вставочного элемента является самой логарифмической.
Броски: Если выполняется внутренняя функция key_compare ordering. Сильная гарантия.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
- <
iteratorinsert(const_iteratorhint,referencevalue);
>Требуется: Значение должно быть значением l, а «наконечник» должен быть действительным итератором.
Эффекты: Вставляет х в контейнер, используя «наконечник» в качестве подсказки, где он будет вставлен. Если «подсказка» находится в верхнем узле, вставка занимает постоянное время (два сравнения в худшем случае)
Сложность: Логарифмическое вообще, но это амортизированное постоянное время, если t вставлено непосредственно перед намёком.
Броски: Если выполняется внутренняя функция key_compare ordering. Сильная гарантия.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
- <
template<typenameIterator>voidinsert(Iteratorb,Iteratore);
>Требуется: Ссылочный итератор должен давать значение l типа value_type.
Эффекты: Вставляет каждый элемент диапазона в контейнер перед верхней границей ключа каждого элемента.
Сложность: Диапазон вставки, как правило, O(N * log(N)), где N - размер диапазона. Однако он является линейным в N, если диапазон уже отсортирован по значению_comp().
Бросок: Ничего.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
- <
iteratorinsert_before(const_iteratorpos,referencevalue);
>Требуется: Значение должно быть значением l, "pos" должно быть действительным итератором (или концом) и должно быть датчиком значения после вставки в соответствии с предикатом
: Вставляет х в контейнер перед "по".
Сложность: Постоянное время.
Бросок: Ничего.
Примечание: Эта функция не проверяет предварительные условия, поэтому, если «pos» не является преемником инварианта упорядочивания контейнера «value», он будет нарушен. Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.
- <
voidpush_back(referencevalue);
>Требуется: Значение должно быть lvalue, и оно должно быть не меньше, чем наибольший вставленный ключ
Эффекты: Вставьте x в контейнер в последнем положении.
Сложность: Постоянное время.
Бросает: Ничего.
Примечание: Эта функция не проверяет предварительные условия, поэтому, если значение меньше наибольшего инварианта упорядочивания вставленного ключа, оно будет нарушено. Эта функция немного более эффективна, чем использование «insert_before». Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.
- <
voidpush_front(referencevalue);
>Требуется: Значение должно быть lvalue, и оно не должно быть больше минимального вставленного ключа
Эффекты: Вставьте x в контейнер в первом положении.
Сложность:
Бросает: Ничего.
Примечание: Эта функция не проверяет предварительные условия, поэтому, если значение больше минимального инварианта вставленного ключевого контейнера будет нарушено. Эта функция немного более эффективна, чем использование «insert_before». Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.
- <
iteratorerase(const_iteratori);
>Эффекты: Стирает элемент, на который указывает i.
Сложность: Средняя сложность для элемента стирания — постоянное время.
Бросок: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
iteratorerase(const_iteratorb,const_iteratore);
>Эффекты: Уничтожает диапазон, указанный на b-конце e.
Сложность: Средняя сложность для диапазона стирания составляет максимум O(log(size() + N)), где N - число элементов в диапазоне.
Броски: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
size_typeerase(constkey_type&key);
>Эффекты: Стирает все элементы с заданным значением.
Возврат: Количество стертых элементов.
Сложность: O(log(size() + N)
Броски: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
size_typeerase(constKeyType&key,KeyTypeKeyComparecomp);
>Требуется: Ключ - это значение, такое, что<*this
>разделено по отношению к comp(nk, key) и !comp(key, nk), причем comp(nk, key) подразумевает !comp(key, nk), причем nk ключ_тип значения_type вставлен в<*this
>.
Эффекты: Стирает все элементы заданным ключом. Согласно сравнительным функтора "комп."
Возвращение: Количество стертых элементов.
Сложность: O(log(size() + N)
Броски: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
template<typenameDisposer>
iteratorerase_and_dispose(const_iteratori,Disposerdisposer);
>Требует: Диспетчер::оператор()(указатель) не должен бросать.
Эффекты: Стирает элемент, на который указывает i. Утилизатор::оператор()(указатель) вызывается для удаленного элемента.
Сложность: Средняя сложность для элемента стирания — постоянное время.
Бросок: Ничего.
Примечание: Инвалидирует итераторы на стертые элементы.
- <
template<typenameDisposer>
iteratorerase_and_dispose(const_iteratorb,const_iteratore,
Disposerdisposer);
>Требует: Диспетчер::оператор()(указатель) не должен бросать.
Эффекты: Уничтожает диапазон, указанный на b-конце e. Утилизатор::оператор()(указатель) вызывается для удаленных элементов.
Сложность: Средняя сложность для диапазона стирания составляет максимум O(log(size() + N)), где N - число элементов в диапазоне.
Броски: Ничего.
Примечание: Инвалидирует итераторы на стертые элементы.
- <
template<typenameDisposer>
size_typeerase_and_dispose(constkey_type&key,Disposerdisposer);
>Требует: Диспетчер::оператор()(указатель) не должен бросать.
Эффекты: Стирает все элементы с заданным значением. Диспозитор::оператор()(указатель) вызывается для удаленных элементов.
Возвращение: Количество стертых элементов.
Сложность: O(log(size() + N)
Бросок: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
template<typenameKeyType,typenameKeyTypeKeyCompare,typenameDisposer>
size_typeerase_and_dispose(constKeyType&key,KeyTypeKeyComparecomp,
Disposerdisposer);
>Требуется: Ключ — это такое значение, что<*this
>разбивается по отношению к comp(nk, key) и !comp(key, nk), причем comp(nk, key) подразумевает !comp(key, nk) и nk ключ_тип значения_типа, вставленный в<*this
>.
Требует: Диспетчер::оператор()(указатель) не должен бросать.
Эффекты: Стирает все элементы заданным ключом. По данным сравнения функтор «комп». Диспозитор::оператор()(указатель) вызывается для удаленных элементов.
Возвращение: Количество стертых элементов.
Сложность: O(log(size() + N)
Броски: Ничего.
Примечание: Инвалидирует итераторы на стертые элементы.
- <
voidclear();
>Эффекты: Стирает все элементы.
Сложность: Линейный по количеству элементов на контейнере. Если это безопасный режим или авто-разъединить значение_тип. Постоянное время иначе.
Бросает: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
- <
template<typenameDisposer>voidclear_and_dispose(Disposerdisposer);
>Эффекты: Стирает все элементы, вызывающие диспергатор (p), чтобы каждый узел был стерт.Сложность: Средняя сложность составляет максимум O(log(size()+N)), где N - количество элементов в контейнере.
Бросок: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Звонки N раз для удаления функтора.
- <
size_typecount(constkey_type&key)const;
>Эффекты: Возвращает число содержащихся элементов с заданным значением
Сложность: Логарифмическое к числу содержащихся элементов плюс линейное к числу объектов с заданным значением.
Бросок: Если<key_compare
>бросок.
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
size_typecount(constKeyType&key,KeyTypeKeyComparecomp)const;
>Требуется: Ключ - это значение, такое, что<*this
>разделено относительно comp(nk, key) и !comp(key, nk), причем comp(nk, key) подразумевает !comp(key, nk), а nk - ключ_тип значения_типа, вставленный в<*this
>.
Эффекты: Возвращает число содержащихся элементов с заданным ключом
Сложность: Логарифмическое к числу содержащихся элементов плюс линейное к числу объектов с заданным ключом.
Броски: Если<comp
>бросок.
- <
iteratorlower_bound(constkey_type&key);
>Эффекты: Возвращает итератор к первому элементу, ключ которого не меньше k или конца (), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Если<key_compare
>бросок.
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
iteratorlower_bound(constKeyType&key,KeyTypeKeyComparecomp);
>Эффекты: Возвращает итератор к первому элементу, ключ которого не меньше k или конца(), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Если<key_compare
>бросит
- <
const_iteratorlower_bound(constkey_type&key)const;
>Эффекты: Возвращает итератор к первому элементу, ключ которого не меньше k или конца(), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Если<key_compare
>бросит
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
const_iterator
lower_bound(constKeyType&key,KeyTypeKeyComparecomp)const;
>Эффекты: Возвращает итератор к первому элементу, ключ которого не меньше k или конца (), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Если<key_compare
>бросит
- <
iteratorupper_bound(constkey_type&key);
>Эффекты: Возвращает итератор к первому элементу, ключ которого больше k или конца(), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Если<key_compare
>бросок.
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
iteratorupper_bound(constKeyType&key,KeyTypeKeyComparecomp);
>Требуется: Ключ является значением, таким, что<*this
>разделен относительно !comp(ключ, nk), с nk ключ_тип значения_тип вставлен в<*this
>.
Эффекты: Возвращает итератор к первому элементу, чей ключ больше k согласно comp или end(), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Если<comp
>бросит.
- <
const_iteratorupper_bound(constkey_type&key)const;
>Эффекты: Возвращает итератор к первому элементу, ключ которого больше k или конца(), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Если<key_compare
>бросит.
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
const_iterator
upper_bound(constKeyType&key,KeyTypeKeyComparecomp)const;
>Требуется: Ключ — это такое значение, что<*this
>разбивается на !comp(ключ, nk), при этом nk ключ_тип значения_тип вставляется в<*this
>.
Эффекты: Возвращает итератор к первому элементу, ключ которого больше k по компу или концу(), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Если<comp
>бросит
- <
iteratorfind(constkey_type&key);
>Эффекты: Найден итератор первого элемента, ключом которого является k или конец(), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Если<key_compare
>бросит.
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
iteratorfind(constKeyType&key,KeyTypeKeyComparecomp);
>Требуется: Ключ - это значение, такое, что<*this
>разделено относительно comp(nk, key) и !comp(key, nk), причем comp(nk, key) подразумевает !comp(key, nk), а nk - ключ_тип значения_type, вставленный в<*this
>.
Эффекты: Найден итератор к первому элементу, ключ которого k или конец(), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Если<comp
>бросит.
- <
const_iteratorfind(constkey_type&key)const;
>Эффекты: Найден итератор к первому элементу, ключ которого k или конец(), если этот элемент не существует.
Сложность: Логарифмический.
Броски: Если<key_compare
>бросит
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
const_iteratorfind(constKeyType&key,KeyTypeKeyComparecomp)const;
>Требуется: ключ является таким значением, что<*this
>разбивается по отношению к comp(nk, key) и !comp(key, nk), причем comp(nk, key) подразумевает !comp(key, nk), а nk ключ_тип значения_type вставляется в<*this
>.
Эффекты: Найден итератор к первому элементу, ключ которого k или конец(), если этот элемент не существует.
Сложность: Логарифмический.
Бросает: Если<comp
>бросит.
- <
std::pair<iterator,iterator>equal_range(constkey_type&key);
>Эффекты: Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, в котором эти элементы были бы, если бы у них не было элементов с ключом k.
Сложность: Логарифмический.
Бросок: Если<key_compare
>бросит.
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
std::pair<iterator,iterator>
equal_range(constKeyType&key,KeyTypeKeyComparecomp);
>Требуется: Ключ - это значение, такое, что<*this
>разделено по отношению к comp(nk, key) и !comp(key, nk), причем comp(nk, key) подразумевает !comp(key, nk), причем nk ключ_тип значения_type вставлен в<*this
>.
Эффекты: Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, в котором эти элементы были бы, если бы у них не было элементов с ключом k.
Сложность: Логарифмический.
Броски: Если бросит<comp
>.
- <
std::pair<const_iterator,const_iterator>
equal_range(constkey_type&key)const;
>Эффекты: Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, в котором эти элементы были бы, если бы у них не было элементов с ключом k.
Сложность: Логарифмический.
Бросок: Если<key_compare
>бросит
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
std::pair<const_iterator,const_iterator>
equal_range(constKeyType&key,KeyTypeKeyComparecomp)const;
>Требуется: Ключ - это значение, такое, что<*this
>разделено относительно comp(nk, key) и !comp(key, nk), причем comp(nk, key) подразумевает !comp(key, nk), причем nk - ключ_типа значения_типа вставлен в<*this
>.
Эффекты: Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, в котором эти элементы были бы, если бы у них не было элементов с ключом k.
Сложность: Логарифмический.
Бросок: Если бросит<comp
>.
- <
std::pair<iterator,iterator>
bounded_range(constkey_type&lower_key,constkey_type&upper_key,
boolleft_closed,boolright_closed);
>Требует:<upper_key
>не должен предшествовать<lower_key
>в соответствии с key_compare.
Если<lower_key
>эквивалентно<upper_key
>[!key_comp() [!key_comp() [!upper_key, lower_key) && !key_comp() [(lower_key, upper_key)] тогда ['left_closed' | | 'right_closed'] должно быть ложным
: Возвращает пару со следующими критериями:
первый = нижний_связанный (нижний_ключ), если левый_закрытый, верхний_связанный (нижний_ключ) в противном случае
второй = верхний_связанный (верхний_ключ), если правый_закрытый, нижний_связанный (верхний_ключ) в противном случае
: Логарифмический.
Броски: Если<key_compare
>бросает.
Примечание: Эта функция может быть более эффективной, чем вызов верхнего и нижнего пределов для нижнего и верхнего значений.
Примечание: Экспериментальная функция, интерфейс может измениться в будущих выпусках.
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
std::pair<iterator,iterator>
bounded_range(constKeyType&lower_key,constKeyType&upper_key,
KeyTypeKeyComparecomp,boolleft_closed,boolright_closed);
>Требует:<lower_key
>является значением, таким, что<*this
>разбивается по отношению к comp(nk, lower_key), если слева_closed истинно, по отношению к !comp(lower_key, nk) иначе.
<upper_key
>является значением, таким, что<*this
>разбивается по отношению к !comp(upper_key, nk), если право_closed истинно, по отношению к comp(nk, upper_key) иначе.
<upper_key
>не должен предшествовать<lower_key
>в соответствии с Comp [comp(upper_key, lower_key) должен быть ложным]
Если<lower_key
>эквивалентно<upper_key
>[!comp(upper_key, lower_key) && !comp(lower_key, upper_key)], то ('left_closed' | | 'right_closed') должно быть ложным.
Эффекты: Возвращает пару со следующими критериями:
первый = нижний_bound(lower_key, comp) при левом_закрытом, верхний_bound(lower_key, comp) в противном случае
второй = верхний_bound(upper_key, comp) при правом_закрытом, нижний_bound(upper_key, comp) в противном случае
: Логарифмический.
Бросок: Если<comp
>бросает.
Примечание: Эта функция может быть более эффективной, чем вызов top_bound и lower_bound для low_key и upper_key.
Примечание: Экспериментальная функция, интерфейс может измениться в будущих выпусках.
- <
std::pair<const_iterator,const_iterator>
bounded_range(constkey_type&lower_key,constkey_type&keyupper_key,
boolleft_closed,boolright_closed)const;
>Требует:<upper_key
>не должен предшествовать<lower_key
>в соответствии с key_compare. [key_comp()(upper_key, lower_key) должен быть ложным]
Если<lower_key
>эквивалентно<upper_key
>[!key_comp()(upper_key, lower_key) && !key_comp()(lower_key, upper_key)], то ('left_closed' | | 'right_closed') должно быть ложным.
Эффекты: Возвращает пару со следующими критериями:
первый = нижний_связанный (нижний_ключ), если левый_закрытый, верхний_связанный (нижний_ключ) в противном случае
второй = верхний_связанный (верхний_ключ), если правый_закрытый, нижний_связанный (верхний_ключ) в противном случае
: Логарифмический.
Бросок: Если<key_compare
>бросит.
Примечание: Эта функция может быть более эффективной, чем вызов верхнего и нижнего пределов для нижнего и верхнего значений.
Примечание: Экспериментальная функция, интерфейс может измениться в будущих выпусках.
- <
template<typenameKeyType,typenameKeyTypeKeyCompare>
std::pair<const_iterator,const_iterator>
bounded_range(constKeyType&lower_key,constKeyType&upper_key,
KeyTypeKeyComparecomp,boolleft_closed,boolright_closed)const;
>:<lower_key
>является значением, таким, что<*this
>разделен по отношению к comp(nk, low_key, nk) в противном случае, по отношению к !comp(lower_key, nk)
<*this
>по отношению к !comp(upper_key, nk) по отношению к !comp(upper_key, nk) по отношению к !comp(upper_key, nk) по отношению к !comp(upper_key, upper_key) в противном случае
<upper_key
>по отношению к comp [comp(upper_key, lower_key) не должен предшествовать<lower_key
>по отношению к comp [comp(upper_key, lower_key)
Если<lower_key
>эквивалентен<upper_key
>[!comp(upper_key, lower_key) && !comp(lower_key, upper_key)
Эффекты: Возвращает пару со следующими критериями:
первый = нижний_bound(lower_key, comp) при левом_закрытом, верхний_bound(lower_key, comp) в противном случае
второй = верхний_bound(upper_key, comp) при правом_закрытом, нижний_bound(upper_key, comp) в противном случае
: Логарифмический.
Бросок: Если<comp
>бросает.
Примечание: Эта функция может быть более эффективной, чем вызов top_bound и lower_bound для low_key и upper_key.
Примечание: Экспериментальная функция, интерфейс может измениться в будущих выпусках.
- <
iteratoriterator_to(referencevalue);
>Требуется: Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено.
Эффекты: Возврат: действительный итератор i, относящийся к набору, который указывает на значение
Сложность: Константа.
Броски: Ничего.
- <
const_iteratoriterator_to(const_referencevalue)const;
>Требуется: Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено.
Эффекты: Возврат: действительный const_iterator i, принадлежащий множеству, которое указывает на значение
Сложность: Константа.
Броски: Ничего.
- <
pointerunlink_leftmost_without_rebalance();
>Эффекты: Отсоединяет самый левый узел контейнера.
Сложность: Средняя сложность — это постоянное время.
Броски: Ничего.
Примечания: Эта функция разрушает контейнер, и контейнер может использоваться только для дополнительных вызовов unlink_leftmost_without_rebalance. Эта функция обычно используется для достижения поэтапного контролируемого разрушения контейнера.
- <
voidreplace_node(iteratorreplace_this,referencewith_this);
>Требуется: Заменить_это должен быть действительный итератор *это и с_это не должно быть вставлено в любой контейнер.
Эффекты: Заменяет замену_this в своем положении в контейнере с_this. Контейнер не нужно перебалансировать.
Сложность:
Бросает: Ничего.
Примечание: Эта функция будет нарушать инварианты заказа контейнера, если с_это не эквивалентно *заменить_это в соответствии с правилами заказа. Эта функция быстрее, чем стирание и вставка узла, поскольку не требуется перебалансировки или сравнения.
- <
voidremove_node(referencevalue);
>Эффекты: удаляет «значение» из контейнера.
Бросок: Ничего.
Сложность: Логарифмическое время.
Примечание: Эта статическая функция может использоваться только в непостоянных контейнерах с размером времени, которые имеют функторы сравнения без состояния.
Если пользователь называет эту функцию контейнером с постоянным размером времени или функтором сравнения состояния, будет выпущена ошибка компиляции.
- <
template<class...Options2>voidmerge(avl_multiset<T,Options2...>&source);
>Требуется: Варианты контейнера "источник" могут отличаться только функцией сравнения от *этого.
Эффекты: Извлекает каждый элемент в источнике и вставляет его в объект сравнения *это.
Посткондиция: Указатели и ссылки на переданные элементы источника относятся к тем же элементам, но как к членам этого. Итераторы, относящиеся к переданным элементам, будут продолжать ссылаться на их элементы, но теперь они ведут себя как итераторы в это, а не в источник.
Броски: Ничего, если объект сравнения не бросит.
Сложность: N log(a.size() + N) (N имеет значение source.size())
- <
template<class...Options2>voidmerge(avl_set<T,Options2...>&source);
>Требуется: Варианты контейнера "источник" могут отличаться только функцией сравнения от *этого.
Эффекты: Извлекает каждый элемент в источнике и вставляет его в объект сравнения *это.
Посткондиция: Указатели и ссылки на переданные элементы источника относятся к тем же элементам, но как к членам этого. Итераторы, относящиеся к переданным элементам, будут продолжать ссылаться на их элементы, но теперь они ведут себя как итераторы в это, а не в источник.
Броски: Ничего, если объект сравнения не бросит.
Сложность: N log(a.size() + N) (N имеет значение source.size())