итераторначинают;
Эффекты: Возвращает итератор, указывающий на начало контейнера.
Сложность: Постоянная.
Броски: Ничего.
const_iteratorначинают;
Эффекты: Возвращает const_iterator, указывающий на начало контейнера.
Сложность: Постоянная.
Бросает: Ничего.
const_iteratorcbegin;
Эффекты: Возвращает const_iterator, указывающий на начало контейнера.
Сложность: Постоянная.
Бросает: Ничего.
итераторконец;
Эффекты: Возвращает итератор, указывающий на конец контейнера.
Сложность: Постоянная.
Броски: Ничего.
const_iteratorendconst;
Эффекты: Возвращает const_iterator, указывающий на конец контейнера.
Сложность: Постоянная.
Бросает: Ничего.
const_iteratorcendconst;
: Возвращает const_iterator, указывающий на конец контейнера.
Сложность: Постоянная.
Броски: Ничего.
reverse_iteratorrbegin;
Эффекты: Возвращает обратный_iterator, указывающий на начало обратного контейнера.
Сложность: Постоянная.
Броски: Ничего.
const_reverse_iteratorrbeginconst;
Эффекты: Возвращает const_reverse_iterator, указывающий на начало обратного контейнера.
Сложность: Постоянная.
Броски: Ничего.
const_reverse_iteratorcrbeginconst;
Эффекты: Возвращает const_reverse_iterator, указывающий на начало обратного контейнера.
Сложность: Постоянная.
Броски: Ничего.
reverse_iteratorrend;
Эффекты: Возвращает обратный_iterator, указывающий на конец обратного контейнера.
Сложность: Константа.
Броски: Ничего.
const_reverse_iteratorrendconst;
: Возвращает const_reverse_iterator, указывающий на конец обратного контейнера.
Сложность: Постоянная.
Броски: Ничего.
const_reverse_iteratorcrendconst;
Эффекты: Возвращает const_reverse_iterator, указывающий на конец обратного контейнера.
Сложность: Постоянная.
Броски: Ничего.
итераторкорень;
Эффекты: Возвращает итератор, указывающий на корневой узел контейнера или конец(), если он не присутствует.
Сложность: Константа.
Броски: Ничего.
const_iteratorrootconst;
Эффекты: Возвращает const_iterator, указывающий на корневой узел контейнера или кенд(), если он отсутствует.
Сложность: Константа.
Броски: Ничего.
const_iteratorcrootconst;
Эффекты: Возвращает const_iterator, указывающий на корневой узел контейнера или кенд(), если он отсутствует.
Сложность: Постоянная.
Броски: Ничего.
key_comparekey_compconst;
Эффекты: Возвращает объект key_compare, используемый контейнером.
Сложность: Константа.
Броски: Если бросит key_compare копи-конструктор.
value_comparevalue_compconst;
: Возвращает значение_сравнительный объект, используемый контейнером.
Сложность: Постоянная.
Бросает: Если value_compare копи-конструктор бросает.
boolemptyconst;
: Возвращается, если контейнер пуст.
Сложность: Постоянная.
Броски: Ничего.
size_typesizeconst;
Эффекты: Возвращает количество элементов, хранящихся в контейнере.
Сложность: Линейный к элементам, содержащимся в *это, если опция постоянного размера отключена. Постоянное время иначе.
Бросает: Ничего.
voidswapavltree&other;
Эффекты: Изменить содержимое двух контейнеров.
Сложность: Постоянная.
Броски: Если сравнительный своп функтора бросает вызов.
шаблон<имя типаКлонер,имя типаДиспозитор>пустотаклон_ отпротивavltree&src,Клонерклонер,Диспозитор
: Диспозитор::оператор()(указатель) не должен бросать. Клонер должен уступить узлам, эквивалентным исходным узлам.
Эффекты: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src, вызывающего Клонера::оператор()(const_reference) и вставляет их на *это. Копирует предикат из исходного контейнера.
Если клонер бросает, все клонированные элементы несвязаны и расположены, вызывая Диспозитор::оператор()(указатель).
Сложность: Линейный стертый плюс вставленные элементы.
Бросок: Если клонер бросает или предикат копирования, задание бросает. Базовая гарантия.
шаблон<имя типа,имя типа>пустотаклон_ отavltree&&src,
Требует: Диспетчер::оператор()(указатель) не должен бросать. Клонер должен уступить узлам, эквивалентным исходным узлам.
Эффекты: Стирает все элементы из *этого вызывающего Диспозитора::оператор()(указатель), клонирует все элементы из src, вызывающего Клонера::оператор()(ссылка) и вставляет их на *это. Копирует предикат из исходного контейнера.
Если клонер бросает, все клонированные элементы несвязаны и расположены, вызывая Диспозитор::оператор()(указатель).
Сложность: Линейный стертый плюс вставленные элементы.
Бросок: Если клонер бросает или предикат копирования, задание бросает. Основная гарантия.
Примечание: Эта версия может модифицировать исходный контейнер, полезный для реализации семантики перемещения.
итераторвставить_равныйэталонноезначение;
Требует: значение должно быть lvalue
Эффекты: Вставляет значение в контейнер перед верхней границей.
Сложность: Средняя сложность для вставочного элемента является самой логарифмической.
Броски: Если выполняется внутренняя функция key_compare ordering. Сильная гарантия.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
итераторвставить_равныйconst_iteratorнамек,ссылказначение;
Требует: Значение должно быть значением l, а «наконечник» должен быть действительным итератором.
Эффекты: Вставляет х в контейнер, используя «наконечник» в качестве подсказки, где он будет вставлен. Если «подсказка» находится в верхнем узле, вставка занимает постоянное время (два сравнения в худшем случае)
Сложность: Логарифмическое вообще, но это амортизированное постоянное время, если t вставлено непосредственно перед намёком.
Бросает: Если выполняется внутренняя функция key_compare ordering. Сильная гарантия.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
шаблон<имя типаИтератор>пустотавставка_equalИтераторb,e;
Требует: Ссылочный итератор должен давать значение l типа value_type.
Эффекты: Вставляет каждый элемент диапазона в контейнер перед верхней границей ключа каждого элемента.
Сложность: Диапазон вставки, как правило, O(N * log(N)), где N - размер диапазона. Однако она линейна в N, если диапазон уже отсортирован по значению_comp().
Бросок: Ничего.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
std::пара<итератор,bool>вставка_уникальнаяэталонноезначение;
Требует: Значение должно быть значением l
Эффекты: Вставляет значение в контейнер, если оно еще не присутствует.
Сложность: Средняя сложность для вставочного элемента является наиболее логарифмической.
Броски: Ничего.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
итераторвставка_уникальнаяconst_iteratorподсказка,ссылказначение;
Требует: Значение должно быть значением l, а «подсказка» должна быть действительным итератором
: Пытается вставить x в контейнер, используя «наконечник» в качестве подсказки, где он будет вставлен.
Сложность: Логарифмический вообще, но это амортизированное постоянное время (два сравнения в худшем случае), если t вставлено непосредственно перед намёком.
Бросает: Ничего.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
шаблон<имя типаKeyType,std::пара<итератор,bool>вставка_unique_checkконст&ключKeyTypeKeyCompare,вставка_commit_data&]вставка_comm Comp должен быть функцией сравнения, которая вызывает ту же строгую слабую упорядоченность, что и key_compare. Разница в том, что комп сравнивает произвольный ключ с содержащимися значениями.Эффекты: Проверяет, можно ли вставить значение в контейнер, используя предоставленный пользователем ключ вместо самого значения.
Возвращение: Если существует эквивалентное значение, то пара, содержащая итератор, возвращается к уже существующей стоимости и ложна. Если значение может быть вставлено, возвращается истинное значение в возвращенной паре boolean и заполняет «commit_data», которое предназначено для использования с функцией «insert_commit».
Сложность: Средняя сложность в лучшем случае логарифмическая.
Броски: Если выполняется функция заказа. Сильная гарантия.
Примечания: Эта функция используется для повышения производительности при построении стоимостного типа: при наличии эквивалентного значения построенный объект должен быть отброшен. Часто часть узла, которая используется для наложения заказа, намного дешевле в конструировании, чем значение_тип, и эта функция предлагает возможность использовать эту часть для проверки того, будет ли вставка успешной.
Если проверка прошла успешно, пользователь может построить значение_тип и использовать «insert_commit» для вставки объекта в постоянное время. Это придает полную логарифмическую сложность вставке: check(O(log(N)) + commit(O(1)).
«commit_data» остается действительным для последующего «insert_commit» только в том случае, если из контейнера больше не вставляются и не стираются объекты.
шаблон<std::пара<итератор<итераторbool>вставка_unique_checkподсказкатребует[ Comp должен быть функцией сравнения, которая вызывает ту же строгую слабую упорядоченность, что и key_compare. Разница в том, что комп сравнивает произвольный ключ с содержащимися значениями.
Эффекты: Проверяет, может ли значение быть вставлено в контейнер, используя предоставленный пользователем ключ вместо самого значения, используя «подсказку» в качестве подсказки к тому, где оно будет вставлено.
Возвращение: Если существует эквивалентное значение, то пара, содержащая итератор, возвращается к уже существующей стоимости и ложна. Если значение может быть вставлено, возвращается истинное значение в возвращенной паре boolean и заполняет «commit_data», которое предназначено для использования с функцией «insert_commit».
Сложность: Логарифмическое вообще, но это амортизированное постоянное время, если t вставлено непосредственно перед намёком.
Броски: Если выполняется функция заказа. Сильная гарантия.
Примечания: Эта функция используется для повышения производительности при построении стоимостного типа: при наличии эквивалентного значения построенный объект должен быть отброшен. Часто часть конструкции, которая используется для наложения заказа, намного дешевле в конструировании, чем значение_тип, и эта функция предлагает возможность использовать этот ключ, чтобы проверить, будет ли вставка успешной.
Если проверка прошла успешно, пользователь может построить значение_тип и использовать «insert_commit» для вставки объекта в постоянное время. Это может придать полную сложность с постоянным временем для вставки: check(O(1)) + commit(O(1)).
«commit_data» остается действительным для последующего «insert_commit» только в том случае, если из контейнера больше не вставляются и не стираются объекты.
std::пара<итератор,bool>вставка_unique_checkконстконстключ_тип&ключ,вставка_commit_data&вставка_commit_data&ввод_data;
ЭффектыПроверяет, можно ли вставить значение в контейнер, используя предоставленный пользователем ключ вместо самого значения.Возвращение: Если существует эквивалентное значение, то пара, содержащая итератор, возвращается к уже существующей стоимости и ложна. Если значение может быть вставлено, возвращается истинное значение в возвращенной паре boolean и заполняет «commit_data», которое предназначено для использования с функцией «insert_commit».
Сложность: Средняя сложность в большинстве случаев логарифмическая.
Бросок: Если выполняется функция заказа. Сильная гарантия.
std::пара<итератор,>вставка_unique_checkconst_iteratorподсказка,конст_iteratorнамек,констключ_тип&ключ,вставка_commit_data&вставка_commit_data& [ Проверяет, может ли значение быть вставлено в контейнер, используя предоставленный пользователем ключ вместо самого значения, используя «подсказку» в качестве подсказки к тому, где оно будет вставлено.Возвращение: Если существует эквивалентное значение, то пара, содержащая итератор, возвращается к уже существующей стоимости и ложна. Если значение может быть вставлено, возвращается истинное значение в возвращенной паре boolean и заполняет «commit_data», которое предназначено для использования с функцией «insert_commit».
Сложность: Логарифмическое вообще, но это амортизированное постоянное время, если t вставлено непосредственно перед намёком.
Броски: Если выполняется функция заказа. Сильная гарантия.
итераторвставить_unique_commitэталонноезначение,constвставить_commit_data&вписать_data;
Требует: Значение должно быть значением типа value_type. commit_data должны быть получены из предыдущего вызова на «insert_check». Никакие объекты не должны были вставляться или стираться из контейнера между «insert_check», который заполнял «commit_data», и призывом «insert_commit»
: Вставляет значение в контейнер, используя информацию, полученную из «commit_data», которую заполнил предыдущий «insert_check».
Возвращение: Итератор вновь вставленного объекта.
Сложность: Постоянное время.
Бросок: Ничего.
Примечания: Эта функция имеет смысл только в том случае, если ранее была выполнена «insert_check» для заполнения «commit_data». Не следует вставлять или стирать значение между вызовами «insert_check» и «insert_commit».
шаблон<имя типаИтератор>пустотавставка_уникальнаяИтераторb,e;
Требует: Ссылочный итератор должен давать значение l типа value_type.
Эффекты: Пытается вставить каждый элемент диапазона в контейнер.
Сложность: Диапазон вставки, как правило, O(N * log(N)), где N - размер диапазона. Однако он является линейным в N, если диапазон уже отсортирован по значению_comp().
Бросок: Ничего.
Примечание: Не влияет на достоверность итераторов и ссылок. Копировальными конструкторами не называются.
итераторвставить_доconst_iteratorpos,эталонноезначение;
Требует: Значение должно быть значением l, "pos" должно быть действительным итератором (или концом) и должно быть датчиком значения после вставки в соответствии с предикатом
: Вставляет х в контейнер до "по".
Сложность: Постоянное время.
Броски: Ничего.
Примечание: Эта функция не проверяет предварительные условия, поэтому, если «pos» не является преемником инварианта упорядочивания контейнера «value», он будет нарушен. Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.
voidpush_backэталонноезначение;
Требует: Значение должно быть lvalue, и оно должно быть не меньше самого большого вставленного ключа
Эффекты: Вставьте x в контейнер в последнем положении.
Сложность: Постоянное время.
Броски: Ничего.
Примечание: Эта функция не проверяет предварительные условия, поэтому, если значение меньше наибольшего инварианта упорядочивания вставленного ключа, оно будет нарушено. Эта функция немного более эффективна, чем использование «insert_before». Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.
voidpush_frontэталонноезначение;
Требует: Значение должно быть lvalue, и оно не должно быть больше минимального вставленного ключа
: Вставьте x в контейнер в первом положении.
Сложность: Постоянное время.
Броски: Ничего.
Примечание: Эта функция не проверяет предварительные условия, поэтому, если значение больше минимального инварианта вставленного ключевого контейнера будет нарушено. Эта функция немного более эффективна, чем использование «insert_before». Это низкоуровневая функция, которая используется только для повышения производительности продвинутыми пользователями.
итераторстираниеconst_iterator;
Эффекты: Стирает элемент, на который указывает i.
Сложность: Средняя сложность для элемента стирания — постоянное время.
Броски: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
итераторстираниеconst_iteratorb,const_iteratore;
Эффекты: Уничтожает диапазон, указанный к концу b. e.
Сложность: Средняя сложность для диапазона стирания составляет максимум O(log(size()+N)), где N - число элементов в диапазоне.
Броски: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
size_typeeraseconstkey_type&ключ]
Эффекты: Стирает все элементы с заданным значением.
Возврат: Количество стертых элементов.
Сложность: O(log(size() + N).
Бросает: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
шаблон<имя типаKeyType,имя типаKeyTypeKeyCompare>размер_типстираетконст&ключ,KeyTypeKeyCompare;
Требует: Ключ является значением, таким, что*это
разделено относительно comp(nk, key) и !comp(key, nk), с Comp(nk, key), подразумевающим !comp(key, nk), с nk ключ_тип значения_тип вставлен в*это
.
Эффекты: Стирает все элементы заданным ключом. Согласно сравнительным функторам "комп".
Возвращение: Число стертых элементов.
Сложность: O(log(size() + N).
Броски: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
шаблон<имя типаДиспетчер>итераторerase_and_disposeconst_iteratori,диспетчер;
Требует: Диспетчер::оператор()(указатель) не должен бросать
Эффекты: Стирает элемент, на который указывает i. Утилизатор::оператор()(указатель) вызывается для удаленного элемента.
Сложность: Средняя сложность для элемента стирания — постоянное время.
Броски: Ничего.
Примечание: Инвалидирует итераторы на стертые элементы.
шаблон<имя типаДиспетчер>итераторerase_and_disposeconst_iteratorb,const_iteratore,;
Требует: Диспетчер::оператор()(указатель) не должен бросатьЭффекты: Уничтожает диапазон, указанный на b-конце e. Утилизатор::оператор()(указатель) вызывается для удаленных элементов.
Сложность: Средняя сложность для диапазона стирания составляет максимум O(log(size() + N)), где N - число элементов в диапазоне.
Броски: Ничего.
Примечание: Инвалидирует итераторы на стертые элементы.
шаблон<имя типаДиспетчер>размер_типстирать_и_утилизироватьконстключ_тип&ключ,диспетчер;
Требует: Диспетчер:ЭффектыСтирает все элементы с заданным значением. Диспозитор::оператор()(указатель) вызывается для удаленных элементов.
Возвращение: Число стертых элементов.
Сложность: O(log(size() + N).
Бросает: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
шаблон<имя типаKeyType,имя типаKeyTypeKeyCompare,имя типаТип>размер_типстереть_и_утилизироватьКонст&ключ,KeyTypeKeyCompare,Утилизатор;
Требует[23 Ключ - это такое значение, что*это
разделено по отношению к comp(nk, key) и !comp(key, nk), причем comp(nk, key) подразумевает !comp(key, nk) и nk ключ_тип значения_типа, вставленный в*это
.
Требует: Диспетчер::оператор()(указатель) не должен бросать.
Эффекты: Стирает все элементы заданным ключом. по сравнению с функтором «комп». Диспозитор::оператор()(указатель) вызывается для удаленных элементов.
Возвращение: Количество стертых элементов.
Сложность: O(log(size() + N.]
Броски: Ничего.
Примечание: Инвалидирует итераторы на стертые элементы.
пустотаясно;
Эффекты: Стирает все элементы.
Сложность: Линейный по количеству элементов на контейнере. Если это безопасный режим или авто-разъединить значение_тип. Постоянное время иначе.
Бросает: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.
шаблон<имя типаУтилизатор>пустотаясно_и_утилизировать;
: Стирает все элементы, вызывающие диспергатор (p), для каждого узла, который должен быть удален.Сложность: Средняя сложность составляет максимум O(log(size()+N)), где N - количество элементов в контейнере.
Броски: Ничего.
Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Звонки N раз для удаления функтора.
size_typecountconstkey_type&key]const;
Эффекты: Возвращает число содержащихся элементов с заданным значением
Сложность: Логарифмическое к числу содержащихся элементов плюс линейное к числу объектов с заданным значением.
Бросок: Еслиключ_сравните
бросок.
шаблон<имя типаKeyType,имя типаKeyTypeKeyCompare>размер_типподсчётконстKeyTypeKeyCompareконстТребует: Ключ - это такое значение, что*это
разделено по отношению к comp(nk, key) и !comp(key, nk), причем comp(nk, key) подразумевает !comp(key, nk), и nk ключ_тип значения_type вставлен в*это
.
Эффекты: Возвращает число содержащихся элементов с заданным ключом
Сложность: Логарифмическое к числу содержащихся элементов плюс линейное к числу объектов с заданным ключом.
Бросок: Еслиброски
.
итераторнижний_связанныйконстключ_тип&ключ];
ЭффектыВозвращает итератор к первому элементу, ключ которого не меньше k или конца (), если этот элемент не существует.
Сложность: Логарифмический.
Броски: Еслиключ_сравните
бросок.
шаблон<имя типаKeyType,имя типаKeyTypeKeyCompare>итераторнижний_boundconstKeyType&ключ,KeyTypeKeyComparecomp);
Эффекты: Возвращает итератор к первому элементу, ключ которого не меньше k или конца (), если этот элемент не существует.
Сложность: Логарифмический.
Броски: Еслиключ_сравните
бросок.
const_iteratorlower_boundconstkey_type&key]const;
Эффекты: Возвращает итератор к первому элементу, ключ которого не меньше k или конца (), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Еслиключ_сравните
бросок.
шаблон<имя типаKeyType,имя типаKeyTypeKeyCompare>const_iteratorнижний_boundconst&ключ,KeyTypeKeyComparecomp)const;
: Возвращает итератор к первому элементу, ключ которого не меньше k или конца (), если этот элемент не существует.
Сложность: Логарифмический.
Бросает: Еслиключ_сравните
бросок.
итераторверхний_связанныйконстключ_тип&ключ;
Эффекты: Возвращает итератор к первому элементу, ключ которого больше k или конца(), если этот элемент не существует.
Сложность: Логарифмическая.
Броски: Еслиключ_сравните
бросок.
шаблон<имя типаKeyType,имя типаKeyTypeKeyCompare>итераторверхний_boundconstKeyType&ключ,KeyTypeKeyComparecomp);
Требует: Ключ - это такое значение, что*это
разделено относительно !comp(ключ, nk), при этом nk ключ_тип значения_тип вставлен в*это
.
Эффекты: Возвращает итератор к первому элементу, ключ которого больше k согласно компу или концу(), если этот элемент не существует.
Сложность: Логарифмический.
Бросает:
бросок.
const_iteratorupper_boundconstkey_type&ключ]const;
Эффекты: Возвращает итератор к первому элементу, ключ которого больше k или конца(), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Еслиключ_сравните
бросок.
шаблон<имя типаKeyType,имя типаKeyTypeKeyCompare>const_iteratorверхний_boundconstключKeyTypeKeyCompareconst
требует: Ключ - это такое значение, что*это
разделено относительно !comp(ключ, nk), при этом nk ключ_тип значения_типа вставлен в*это
.Эффекты: Возвращает итератор к первому элементу, чей ключ больше k согласно comp или end(), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Есликомп
бросок.
итераторнайтиconstключ_тип&ключ];
Эффекты: Найден итератор к первому элементу, ключ которого k или конец(), если этот элемент не существует.
Сложность: Логарифмическая.
Броски: Еслиключ_сравните
бросок.
шаблон<имя типаKeyType,имя типаKeyTypeKeyCompare>итераторнайтиconst&ключ,KeyTypeKeyCompareкомп;
Требует: Ключ является значением, таким, что*это
разделено по отношению к comp(nk, key) и !comp(key, nk), с Comp(nk, key), подразумевающим !comp(key, nk), и nk ключ_тип значения_type вставлен в*это
.
Эффекты: Найден итератор к первому элементу, ключ которого k или конец(), если этот элемент не существует.
Сложность: Логарифмический.
Броски: Если, то
бросок.
const_iteratorfindconstkey_type&ключconst;
Эффекты: Найден итератор к первому элементу, ключ которого k или конец(), если этот элемент не существует.
Сложность: Логарифмический.
Бросок: Еслиключ_сравните
бросок.
шаблон<имя типаKeyType,имя типаKeyTypeKeyCompare>const_iteratorнайтиconst&ключ,KeyTypeKeyComparecomp)const;
Требует: Ключ - это такое значение, что*это
разделено по отношению к comp(nk, key) и !comp(key, nk), причем comp(nk, key) подразумевает !comp(key, nk), и nk ключ_тип значения_type вставлен в*это
.
Эффекты: Найден итератор к первому элементу, ключ которого k или конец(), если этот элемент не существует.
Сложность: Логарифмический.
Броски: Если
бросок.
std::пара<итератор,итератор>равный_диапазонконстключ_тип&ключ;
Эффекты: Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, в котором эти элементы были бы, если бы у них не было элементов с ключом k.
Сложность: Логарифмический.
Броски: Еслиключ_сравните
бросок.
шаблон<имя типаKeyType,имя типаKeyTypeKeyCompare>std::пара<итератор,итератор>равный_диапазонконст&ключKeyTypeKeyComparecomp);
Требует: Ключ является значением, таким, что*это
разделено относительно comp(nk, key) и !comp(key, nk), с Comp(nk, key), подразумевающим !comp(key, nk), с nk ключ_тип значения_type вставлен в*это
.
Эффекты: Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, в котором эти элементы были бы, если бы у них не было элементов с ключом k.
Сложность: Логарифмический.
Броски: Еслиброски
.
std::pair<const_iterator,const_iterator>equal_rangeconst&const;
Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, в котором эти элементы были бы, если бы у них не было элементов с ключом k.
Сложность: Логарифмический.
Бросает: Еслиключ_сравните
бросок.
шаблон<имя типаKeyType,имя типаKeyTypeKeyCompare>std::пара<const_iteratorconst_iterator>equal_rangeconstconst&ключключключKeyTypeKeyComparecomp)const;
Требует: Ключ - это такое значение, что*это
разделено по отношению к comp(nk, key) и !comp(key, nk), причем comp(nk, key) подразумевает !comp(key, nk), причем nk ключ_тип значения_type вставлен в*это
.
Эффекты: Найден диапазон, содержащий все элементы, ключ которых k или пустой диапазон, который указывает положение, в котором эти элементы были бы, если бы у них не было элементов с ключом k.
Сложность: Логарифмический.
Броски: Еслиброски
.
std::итераторитераторограниченный_диапазоннижний&нижнийключ_тип&верхний_ключлевый_замкнутыйбулправый_замкнутый]
:нижний_ключ
не должен предшествоватьнижний_ключнижний_ключЕслинижний_ключ
эквивалентенверхний_ключверхний_ключ [35
Эффекты: Возвращает пару со следующими критериями:
первый = нижний_связанный (нижний_ключ), если левый_закрытый, верхний_связанный (нижний_ключ) в противном случае
второй = верхний_связанный (верхний_ключ), если правый_закрытый, нижний_связанный (верхний_ключ) в противном случае
Сложность: Логарифмический.
Бросает: Еслиключ_сравните
бросок.
Примечание: Эта функция может быть более эффективной, чем вызов верхнего и нижнего пределов для нижнего и верхнего значений.
Примечание: Экспериментальная функция, интерфейс может измениться в будущих выпусках.
шаблон<stdитераторитераторограниченный_диапазон[верхний_ключ
является значением, таким, что* этот
разделен относительно !comp(upper_key, nk), если право_закрыто истинно, в отношении comp(nk, upper_key) иначе.
верхний_ключ
не должен предшествоватьнижний_ключ
в соответствии с компом [comp(upper_key, lower_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) в противном случае
: Логарифмический.
Броски: Еслиброски
.
Примечание: Эта функция может быть более эффективной, чем вызов top_bound и lower_bound для low_key и upper_key.
Примечание: Экспериментальная функция, интерфейс может измениться в будущих выпусках.
std::const_iteratorconst_iteratorkey_type&key_type&top_keyleft_closed,boolright_closedconst:upper_key
должен быть ложнымlower_keyЕслиlower_key
эквивалентенupper_key
[!key_comp() [upper_key, lower_key] &
Эффекты: Возвращает пару со следующими критериями:
первый = нижний_bound(lower_key) если левый_замкнут, верхний_bound(lower_key) иначе
второй = верхний_bound(upper_key) если правый_замкнут, нижний_bound(upper_key) иначе
: Логарифмический.
Бросает: Еслиkey_compare
throws.
Примечание: Эта функция может быть более эффективной, чем вызов верхнего и нижнего пределов для нижнего и верхнего значений.
Примечание: Экспериментальная функция, интерфейс может измениться в будущих выпусках.
шаблон<имя типаKeyType>std::пара<const_iterator>const_iterator>ограниченный_range&]нижний_key&нижний_key&верхний_key&верхний_key,[3849верхний_ключ
является значением, таким, что* этот
разделен относительно !comp(upper_key, nk), если право_закрыто истинно, в отношении comp(nk, upper_key) иначе.
верхний_ключ
не должен предшествоватьнижний_ключ
в соответствии с компом [комп(верхний_ключ, нижний_ключ) должен быть ложным]
Еслинижний ключ
эквивалентенверхний ключ
[!comp(upper_key, lower_key) && !comp(lower_key, upper_key)], то ('left_closed' | | 'right_closed') должен быть ложным.
Эффекты: Возвращает пару со следующими критериями:
первый = нижний_связанный (lower_key, comp), если левый_закрытый, верхний_связанный (lower_key, comp) в противном случае
второй = верхний_связанный (upper_key, comp) если правый_закрытый, нижний_связанный (upper_key, comp) в противном случае
Сложность: Логарифмический.
Бросает: Есликомп
бросает.
Примечание: Эта функция может быть более эффективной, чем вызов top_bound и lower_bound для low_key и upper_key.
Примечание: Экспериментальная функция, интерфейс может измениться в будущих выпусках.
итераторитератор_toэталонноезначение;
Требует: Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено.
Эффекты: Возвращение: а действительный итератор i, относящийся к набору, который указывает на значение
Сложность: Постоянная.
Броски: Ничего.
const_iteratoriterator_toconst_referenceзначение]const;
Требует: Значение должно быть lvalue и должно быть в наборе соответствующего типа. В противном случае поведение не определено.
Эффекты: Возврат: действительный const_iterator i, принадлежащий множеству, которое указывает на значение
Сложность: Постоянная.
Бросает: Ничего.
указательunlink_leftmost_without_rebalance;
: Отсоединяет левый узел от контейнера.
Сложность: Средняя сложность — это постоянное время.
Броски: Ничего.
Примечания: Эта функция разрушает контейнер, и контейнер может использоваться только для дополнительных вызовов unlink_leftmost_without_rebalance. Эта функция обычно используется для достижения поэтапного контролируемого разрушения контейнера.
voidreplace_nodeiteratorreplace_this,referencewith_this;
Требует: Заменить_это должен быть действительный итератор *это и с_это не должно быть вставлено в любой контейнер.
Эффекты: Заменяет замену_this в своем положении в контейнере с_this. Контейнер не нужно перебалансировать.
Сложность:
Бросает: Ничего.
Примечание: Эта функция будет нарушать инварианты заказа контейнера, если с_это не эквивалентно *заменить_это в соответствии с правилами заказа. Эта функция быстрее, чем стирание и вставка узла, поскольку не требуется перебалансировки или сравнения.
voidremove_nodereferencevalue;
Effects: removes "value" from the container.
Броски: Ничего.
Сложность: Логарифмическое время.
Примечание: Эта статическая функция может использоваться только в непостоянных контейнерах с размером времени, которые имеют функторы сравнения без состояния.
Если пользователь называет эту функцию контейнером с постоянным размером времени или функтором сравнения состояния, будет выпущена ошибка компиляции.
шаблон<имя типа,класс...пустотаслияние_уникальноеavltree<>]&;
требует: Варианты контейнера "источник" могут отличаться только функцией сравнения от *этого.
Эффекты: Попытки извлечь каждый элемент из источника и вставить его в объект сравнения *это. Если в элементе есть ключ, эквивалентный ключу элемента из источника, то этот элемент не извлекается из источника.
Посткондиционер: Указатели и ссылки на переданные элементы источника относятся к тем же элементам, но как к членам этого. Итераторы, относящиеся к переданным элементам, будут продолжать ссылаться на их элементы, но теперь они ведут себя как итераторы в это, а не в источник.
Бросок: Ничего, если объект сравнения не бросит.
Сложность: N log(a.size() + N) (N имеет значение source.size())
шаблон<класс...Варианты2>пустотаслияние_равноеavltree<>]&&;
требуетВарианты контейнера "источник" могут отличаться только функцией сравнения от *этого.
Эффекты: Извлекает каждый элемент в источнике и вставляет его в объект сравнения *это.
Посткондиция: Указатели и ссылки на переданные элементы источника относятся к тем же элементам, но как к членам этого. Итераторы, относящиеся к переданным элементам, будут продолжать ссылаться на их элементы, но теперь они ведут себя как итераторы в это, а не в источник.
Бросок: Ничего, если объект сравнения не бросит.
Сложность: N log(a.size() + N) (N имеет значение source.size())