iteratorbegin;
: Возвращает итератор, указывающий на начало контейнера.
Сложность: Константа.
Броски: Ничего.
const_iteratorbegin()const;
:Возвращает const_iterator, указывающий на начало контейнера.
:Константа.
Броски: Ничего.
const_iteratorcbegin()const;
: Возвращает const_iterator, указывающий на начало контейнера.
: Constant.
Броски: Ничего.
iteratorend;
: Возвращает итератор, указывающий на конец контейнера.
Сложность: Константа.
Броски: Ничего.
const_iteratorend()const;
: Возвращает const_iterator, указывающий на конец контейнера.
:Константа.
Броски: Ничего.
const_iteratorcend()const;
: Возвращает const_iterator, указывающий на конец контейнера.
: Constant.
Броски: Ничего.
reverse_iteratorrbegin;
: Возвращает обратный_iterator, указывающий на начало обратного контейнера.
Сложность: Константа.
Броски: Ничего.
const_reverse_iterator rbegin()const;
: Возвращает const_reverse_iterator, указывающий на начало обратного контейнера.
: Constant.
Броски: Ничего.
const_reverse_iteratorcrbegin()const;
: Возвращает const_reverse_iterator, указывающий на начало обратного контейнера.
: Constant.
Броски: Ничего.
reverse_iteratorrend;
: Возвращает обратный_iterator, указывающий на конец обратного контейнера.
Сложность: Константа.
Броски: Ничего.
const_reverse_iteratorrend()const;
: Возвращает const_reverse_iterator, указывающий на конец обратного контейнера.
: Constant.
Броски: Ничего.
const_reverse_iteratorcrend()const;
: Возвращает конст_reverse_iterator, указывающий на конец обратного контейнера.
: Constant.
Броски: Ничего.
iteratorroot;
: Возвращает итератор, указывающий на корневой узел контейнера или конец(), если он не присутствует.
: Сложность: Константа.
Броски: Ничего.
const_iteratorrootconst;
: Возвращает конст_iterator, указывающий на корневой узел контейнера или кенд(), если его нет.
: Constant.
Броски: Ничего.
const_iteratorcrootconst;
: Возвращает конст_iterator, указывающий на корневой узел контейнера или кенд(), если его нет.
: Constant.
Броски: Ничего.
key_comparekey_comp()const;
:Возвращает ключ_compare объект, используемый контейнером.
:Константа.
Броски: Если бросит key_compare копи-конструктор.
value_comparevalue_comp()const;
: Возвращает значение_compare объект, используемый контейнером.
: Constant.
Броски: Если value_compare копи-конструктор бросает.
boolempty()const;
: Эффекты: Возвращается верно, если контейнер пуст.
:Константа.
Броски: Ничего.
size_typesizeconst;
: Возвращает количество элементов, хранящихся в контейнере.
: Сложность: Линейность к элементам, содержащимся в *это, если опция постоянного размера отключена. Постоянное время иначе.
Броски: Ничего.
voidswap(splay_multiset& other);
: Эффекты: Замена содержимого двух контейнеров.
:Константа.
Броски: Если сравнительный своп функтора бросает вызов.
templatetypename Cloner, typename Disposer> voidclone_from(constsplay_multiset & src, Cloner disposer);
: Disposer::operator()(pointer) не должен бросать. Клонер должен уступить узлам, эквивалентным исходным узлам.
Последствия: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src вызывающего Клонера::оператор()(const_reference) и вставляет их на *это. Копии предиката из исходного контейнера.
Если клонер бросает, все клонированные элементы несвязаны и расположены, вызывая Диспозитор::оператор()(указатель).
Сложность: Линейный стертый плюс вставленные элементы.
Броски: Если клонер бросает или предикат копирования, задание бросает. Базовая гарантия. Дополнительные примечания: он также копирует альфа-фактор из исходного контейнера.
templatetypename Cloner, typename Disposer> voidclone_from(splay_multiset && src, Cloner disposer;;
: Disposer::operator()(pointer) не должен бросать. Клонер должен уступить узлам, эквивалентным исходным узлам.
Эффекты: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src вызывающего Клонера::оператор()(ссылка) и вставляет их на *это. Копии предиката из исходного контейнера.
Если клонированный элемент бросает, все клонированные элементы являются несвязанными и расположены, вызывая Disposer::operator()(pointer).
Комплексность: Линейный стертый плюс вставленные элементы.
Броски: Если клонер бросает или предикат копирует присвоение бросков. Основная гарантия.
Примечание : Данная версия может модифицировать исходный контейнер, полезный для реализации семантики перемещения.
итераторвставить(ссылказначение;
Требования: Значение должно быть lvalue
:Последствия:Вставить значение в контейнер перед верхней границей.
Средняя сложность для вставочного элемента является наиболее логарифмической.
Броски: Если выполняется внутренняя функция key_compare ordering. Сильная гарантия.
Примечание: Не влияет на действительность итераторов и ссылок. Копировальными конструкторами не называются.
iteratorinsertconst_iterator hint,referencevalue;
: Значение должно быть lvalue, а "hint" должен быть действительным итератором.
: Вставьте x в контейнер, используя "hint" в качестве подсказки, куда он будет вставлен. Если «подсказка» является верхним_связанным, вставка занимает постоянное время (два сравнения в худшем случае)
Сложность: Логарифмическая в целом, но это амортизированное постоянное время, если t вставлен непосредственно перед подсказкой.
Броски: Если внутренняя клавиша_сравните функцию упорядочивания бросает. Сильная гарантия.
Примечание : Не влияет на действительность итераторов и ссылок. Копировальными конструкторами не называются.
templatetypenameIterator>void(Iteratorb,Iteratore;
: Относительный итератор должен давать lvalue of type value_type.
: Вставляет каждый элемент диапазона в контейнер перед верхней границей ключа каждого элемента.
: Вставка диапазона в общем O(N* log(N)), где N - размер диапазона. Однако он является линейным в N, если диапазон уже отсортирован по значению_comp().
Броски: Ничего.
Примечание: Не влияет на валидность итераторов и ссылок. Копировальными конструкторами не называются.
iteratorinert_beforeconst_iterator pos,referencevalue;: Значение должно быть lvalue, "pos" должен быть действительным итератором (или концом) и должен быть сукцессатором значения после вставки в соответствии с предикатом
: Сложность: Постоянное время.
: Ничто.
Примечание: Если "pos" не является преемником инварианта упорядочивания контейнера "value" будет нарушено. Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.
voidpush_back(ссылказначение;
: Значение должно быть lvalue, и оно должно быть не меньше наибольшего вставленного ключа
: Эффекты
Комплексность: Постоянное время.
:Ничего.
Примечание: Если значение меньше наибольшего вставленного инварианта упорядочивания ключа будет нарушено. Эта функция немного более эффективна, чем использование «insert_before». Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.
voidpush_front(ссылка значение;
: Значение должно быть lvalue, и оно должно быть не больше минимального вставленного ключа
: Эффекты: Вставка x в контейнер в первом положении.
: Постоянное время.
: Ничего.
Примечание: Если значение больше минимального вставленного инварианта упорядочивания ключа будет нарушено. Эта функция немного более эффективна, чем использование «insert_before». Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.
iteratorerase(const_iterator i;
: Стирает элемент, на который указывает i.
: Средняя сложность для элемента стирания является постоянным временем.
:Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
iteratoreraseconst_iterator b,const_iterator e;
: Стирает диапазон, указанный на конце b.: Средняя сложность для диапазона стирания составляет самое большее O(log(size()+N)), где N - число элементов в диапазоне.
: Ничто.
: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
size_typeerasekey_typeключ: Стирает все элементы с заданным значением.
: Количество стертых элементов.
: O(log(size() + N)
: Ничего.
: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
template<typename KeyType, typename KeyTypeKeyCompare> size_typeerase & KeyTypeKeyCompare;
: Требуется : ключ такой, что *это
означает !comp(ключ, nk), с nk ключом (ключ, nk), с nk ключом_типом значения_типа, вставленным в
.
: Стирает все элементы с заданным ключом. Согласно сравнительным функторам "комп".
: Количество стертых элементов.
Сложность: O(log(size() + N).
Броски: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
templatetypename>erase_and_dispose,const_iterator i,: Disposer::оператор(): Стирает элемент, на который указывает i. Disposer::оператор(): Средняя сложность для стираемого элемента составляет постоянное время.
: Ничто.
: Инвалидирует итераторы в стертые элементы.
templatetypenameerase_and_dispose,const_iterator e,const_iterator e,: Требуется : Диспозитор::оператор() : Эффекты : Диспозитор::оператор(): Средняя сложность для диапазона стирания составляет максимум O(log(size()+34), где N - число элементов в диапазоне.
:Note: Инвалидирует итераторы в стертые элементы.
templatetypename Disposer> size_typeerase_and_disposekey_type & Key, Disposer disposer;
: Disposer::operator()(pointer):37> : Стирает все элементы с заданным значением. Диспетчер::оператор()(указатель) вызывается для удаленных элементов.
: Количество стертых элементов.
: O(log(size() + N).
Броски: Ничего.
Примечание: Недействительность итераторов (но не ссылок) на стертые элементы. Деструкторы не называются.
template KeyType, typename KeyTypeKeyCompare,erase_и_disposeKeyTypeKeyCompare,KeyTypeKeyComparecompare,Disposer disposer,
Ключ, обозначающий !comp(ключ, nk) и !comp(ключ, nk) с указанием !comp(ключ, nk) и nk ключ_тип значения_типа, вставленный в this
.
Эффекты: Стирает все элементы с заданным ключом. по сравнению с функтором «комп». Диспозитор::оператор()(указатель) вызывается для удаленных элементов.
: Количество стертых элементов.
: O(log(size() + N)
: Броски: Ничего.
Примечание: Инвалидирует итераторы на стертые элементы.
voidclear;
: Эффекты: Стирает все элементы.
Комплексность: Линейное количество элементов на контейнере. Если это безопасный режим или авто-разъединить значение_тип. Постоянное время в противном случае.
Броски: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
templatetypename Disposer> voidclear_and_dispose( disposer);
Эффекты: Уничтожает все элементы, вызывающие disposer(p) для каждого узла, который должен быть удален. Комплексность: Средняя сложность для максимум O(log(size() + N)), где N - количество элементов в контейнере.
Броски: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Звонки N раз для удаления функтора.
size_typecount(constkey_type);
: Возвращает число содержащихся элементов с заданным значением: Логарифмическая к числу содержащихся элементов плюс линейная к числу объектов с заданным значением.
Броски: Если key_compare
бросает. Дополнительное примечание: выполняется неконст-функция, игра.
template<typename KeyType, typename KeyTypeKeyCompare>Счетconst&,;
Требует Требует :Ключ разделен по отношению к comp(nk, key) и !comp(ключ, nk), причем comp(nk, key) подразумевает !comp(ключ, nk) и nk ключ_тип значения_type, вставленный в
.:Логарифмическая по количеству содержащихся элементов плюс линейная по количеству объектов с данным ключом.
Броски: Если comp
бросает. Дополнительное примечание: функция const, отсутствие игры
iteratorlower_bound(constkey_type;;
: Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует.: Logarithmic.
Броски: Если key_compare
бросает. Дополнительное примечание: выполняется неконст-функция, игра.
template<typename KeyType, typename KeyTypeKeyCompare> iteratorlower_bound( &KeyTypeKeyCompare);
Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует. : Logarithmic.
Броски: Если key_compare
бросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «ключ»
const_iteratorlower_bound(key_type &const;
Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует.
: Logarithmic.
Броски: Если key_compare
бросает. Дополнительное примечание: функция const, отсутствие игры
template<typename KeyType, typename KeyTypeKeyCompare> const_iteratorlower_bound(const ,KeyTypeKeyComparecompare)const;
: Возвращает итератор к первому элементу, ключ которого не меньше k или конца() если этот элемент не существует.
: Logarithmic.
Броски: Если key_compare
бросает. Дополнительное примечание: функция const, отсутствие игры
iteratorupper_bound(constkey_type;;
: Возвращает итератор к первому элементу, чей ключ больше k или конца() если этот элемент не существует.: Logarithmic.
Броски: Если key_compare
бросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «значения»
template<typename KeyType, typename KeyTypeKeyCompare> iteratorupper_boundconst &,KeyTypeKeyCompare;
Требуется : ключ такой, что *это
вставляется в *это
.Комплексность:Броски: Если comp
бросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «ключ»
const_iteratorupper_bound(key_type &const;
: Возвращает итератор к первому элементу, чей ключ больше k или конца() если этот элемент не существует.
: Logarithmic.
Броски: Если key_compare
бросает. Дополнительное примечание: функция const, отсутствие игры
template<typename KeyType, typename KeyTypeKeyCompare>constconst &,constcompare;
: Ключ является таким значением, что *это
вставляется в *это
.
Комплексность:Броски: Если comp
бросает. Дополнительное примечание: функция const, отсутствие игры
iterator find(const key_type & key);
Effects: Найден итератор к первому элементу, ключ которого k или конец(), если этот элемент не существует.
Сложность: Логарифмический.
Броски: Если key_compare
бросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «значения»
template<typename KeyType, typename KeyTypeKeyCompare>iteratorconst &,;
Требуется : ключ таков, что *это
означает !comp(ключ, nk), а nk - ключ_тип значения_типа, вставленный в
.КомплексностьБроски: Если комп
бросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «ключ»
const_iteratorfindconst &const;
ПоследствияПолучает итератор к первому элементу, ключ которого k или конец() если этот элемент не существует.
:Логарифмический.
Броски:Если key_compare
бросает. Дополнительное примечание: функция const, отсутствие игры
template<typename KeyType, typename KeyTypeKeyCompare> const & , const;const;
: Ключ является таким значением, что *это
означает !comp(ключ, nk), а nk - ключ_тип значения_типа, вставленный в
.
Комплексность: Броски : Если comp
бросает. Дополнительное примечание: функция const, отсутствие игры
std:: iterator, iterator > equal_range(const key_type &;
: Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, где эти элементы были бы, если у них нет элементов с ключом k.
Сложность : Логарифмический.
Броски : Если key_compare
бросает. Дополнительное примечание: неконст-функция, игра выполняется для первого элемента равного диапазона «значения»
template<typename KeyType, typename KeyTypeKeyCompare>std,iteratorEqual_rangeconst &,KeyTypeKeyCompare,;: Ключ является таким значением, что *это
означает !comp(ключ, nk), с !comp(ключ, nk), с !comp(ключ, nk), с !comp(ключ, nk), с !comp(ключ, nk), с !comp(ключ, nk), с !comp(ключ, nk), с nk ключ_тип значения_тип вставлен в Влияние : Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, где эти элементы были бы, если у них нет элементов с ключом k.
Сложность : Логарифмический.
Броски : Если комп
бросает. Дополнительное примечание: функция non-const, игра выполняется для первого элемента равного диапазона «ключ»
std::const_iterator, const_iterator equal_rangekey_type &const;const;;
Эффекты: Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, в котором эти элементы были бы, если бы у них не было элементов с ключом k.: Logarithmic.
: Броски: Если key_compare
бросает. Дополнительное примечание: функция const не выполняется
template<typename KeyType, typename KeyTypeKeyCompare> , const_iterator (&KeyTypeKeyCompare,const;const;
:Ключ :Ключ означает !comp(ключ, nk), с !comp(ключ, nk), с nk ключом_типа значения_типа, вставленного в
.
Комплексность :Если comp
бросает. Дополнительное примечание: функция const, отсутствие игры
std:: iteratorbounded_rangeconst_reference lower_value, bool left_closed, boolright_closed;
: lower_key
должен быть ложным>51>Если lower_key
эквивалентен upper_key
[!key_key, lower_key] &&!key_comp()(lower_key, upper_key)], то ('left_closed' | |right_closed').
: Возвращает пару со следующими критериями:
первый = low_bound(lower_key) в случае left_closed, upper_bound(lower_key) в противном случае
второй = upper_bound(upper_key) в случае right_closed, lower_bound(upper_key) в противном случае
: Сложность: Logarithmic.
Броски: Если key_compare
бросает.
Примечание: Эта функция может быть более эффективной, чем вызов upper_bound и lower_bound для low_value и upper_value.
Примечание: Экспериментальная функция, интерфейс может измениться в будущих выпусках.
template<typename KeyType, typename KeyTypeKeyCompare>pair,bounded_range, lower_key, top_key, left_closed, boolleft_closed, boolleft_closed,: lower_key
является значением, таким, что upper_key, nk>, если правый_closed верен, по отношению к !comp(nk, upper_key, nk) если правый_closed верен, по отношению к !comp(nk, upper_key, nk) если правый_closed верен, по отношению к !comp(nk, upper_key, nk
: Возвращает пару со следующими критериями:
first = lower_bound(lower_key, comp) if left_closed, upper_bound(lower_key, comp) в противном случае
Сложность: Logarithmic.
: Если comp
бросает.
NoteNote: Экспериментальная функция интерфейса может измениться в будущих выпусках.
std::const_iterator, bounded_range(const_reference lower_value, bool left_closed) const;
: lower_key
должен быть ложным>53>
Если lower_key
эквивалентен upper_key()(upper_key, lower_key) &&!key_comp() тогда ('left_closed' | |right_closed)
: Возвращает пару со следующими критериями:
first = low_bound(lower_key) if left_closed, upper_bound(lower_key) else
second = upper_bound(upper_key) if right_closed, lower_bound(upper_key) if right_44>: Logarithmic.
Броски: Если key_compare
броски.
ПримечаниеПримечание: Экспериментальная функция интерфейса может измениться в будущих выпусках.
template<typename KeyType, typename KeyTypeKeyCompare>pair,bounded_range, low_key, top_key, left_closed, bool left_closed, bool right_closed, const: lower_key
является таким значением, что upper_key, nk>, если правый_closed верен, по отношению к !comp(upper_key, upper_key) истинно, по отношению к !comp(nk, upper_key, nk) истинно, по отношению к !comp(nk, upper_key
не предшествует lower_key
по : Возвращает пару со следующими критериями:
first = low_bound(lower_key, comp) if left_closed, upper_bound(lower_key, comp) otherwise
second = upper_bound(upper_key, comp) if right_closed, lower_bound(upper_key, comp) if right_closed, lower_bound(upper_key, comp) if else
: Logarithmic.
Brows: If comp
throws.
Note: Эта функция может быть более эффективной, чем вызов upper_bound и lower_bound для low_key и upper_key.
Note: Экспериментальная функция интерфейса может измениться в будущих выпусках.
iterator iterator_to(ссылказначение);
Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено.
Последствия: Возврат: действительный итератор i, принадлежащий набору, который указывает на значение
Сложность:Константа.
Броски: Ничего.
const_iteratoriterator_to(const_referencevalue)const;
: Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено.
Последствия: Возврат: действительный const_iterator i, принадлежащий набору, который указывает на значение
Комплексность: Константа.
Броски: Ничего.
pointerunlink_leftmost_without_rebalance;
: Отключает левый узел от контейнера.
: Средняя сложность составляет постоянное время.
: Ничего.
Примечания: Эта функция разбивает контейнер и контейнер можно использовать только для большего количества вызовов unlink_leftmost_without_rebalance. Эта функция обычно используется для достижения поэтапного контролируемого разрушения контейнера.
voidreplace_node(iterator replace_this, reference with_this;
:Requires: replace_this должен быть действительным итератором *this и с_this не должен быть вставлен ни в один контейнер.
: Заменить_this в его положении в контейнере с_this. Контейнер не нуждается в перебалансировке.
: Constant.
Броски: Ничего.
Примечание: Эта функция будет нарушать инварианты упорядочивания контейнера, если с_это не эквивалентно *заменить_это в соответствии с правилами упорядочивания. Эта функция быстрее, чем стирание и вставка узла, поскольку не требуется перебалансировки или сравнения.
voidremove_node;
: удаляет "значение" из контейнера.
: Ничего.
: Сложность: Логарифмическое время.
Примечание: Если пользователь называет эту функцию контейнером с постоянным размером времени или константным сравнительным функтором, будет выпущена ошибка компиляции.
void(iterator i);
: Я должен быть действительным итератором :
: Эффекты: Эффекты : Помещает элемент, указанный i, в корень дерева, улучшая будущие поиски этого значения.
: Амортизированный логарифм.
Броски: Ничего.
template<typename KeyType, typename KeyTypeKeyCompare> iteratorsplay_down(const KeyType , KeyTypeKeyComparecompare);
Воздействие : Если в контейнере хранится элемент с ключом, эквивалентным значению, элемент помещается в качестве корня дерева. Если элемент отсутствует, возвращается последний узел по сравнению с ключом. Если дерево пустое, конец() возвращается. Сложность: Амортизированный логарифм.
: Возвращается: Итератор к новому корню дерева, конец() если дерево пустое.
Бросает: Если бросает сравнительный функтор.
iteratorsplay_downconst key_type &;
: Эффекты: Если в контейнере хранится элемент с ключом, эквивалентным значению, элемент помещается в качестве корня дерева.
: Amortized logarithmic.
: Итератор к новому корню дерева, конец() если дерево пустое.
: Если предикат бросает.
void rebalance();
Последствия: Дерево.
Броски: Ничего.
Сложность: Линейный.
iteratorrebalance_subtreeiterator root;
: old_root является узлом дерева.
: Rebalances the subtree rooted at old_root.
: The new root of the subtree.
: Nothing.
Комплексность: Линейные элементы в поддереве.
templateclass...voidmerge<T...>>;: Опции контейнера «источник» могут отличаться только функцией сравнения от *это.: Указатели и ссылки на переданные элементы источника относятся к тем же элементам, но как к членам *это. Итераторы, относящиеся к переданным элементам, будут продолжать ссылаться на их элементы, но теперь они ведут себя как итераторы в * это, а не в источник.
Броски : Ничего, если объект сравнения не бросает.
Сложность : N log(a.size() + N) (N имеет значение source.size())
template... Options2>merge<T...>>;: Опции контейнера «источник» могут отличаться только функцией сравнения от *это.: Указатели и ссылки на переданные элементы источника относятся к тем же элементам, но как к членам *это. Итераторы, относящиеся к переданным элементам, будут продолжать ссылаться на их элементы, но теперь они ведут себя как итераторы в * это, а не в источник.
Броски : Ничего, если объект сравнения не бросает.
Сложность : N log(a.size() + N) (N имеет значение source.size())