- статическийузелget_headerconstconst_node_ptr&n; - Требует: "узел" - это узел дерева или узел заголовка. - Эффекты: Возвращает заголовок дерева. - Сложность: Логарифмический. - Бросает: Ничего. 
- статическийузел_ptrstart_nodeconstconst_node_ptr&заголовок; Требуется: «заголовок» является узлом заголовка дерева.- Эффекты: Возвращает первый узел дерева, заголовок, если дерево пустое. - Сложность: - Бросает: Ничего. 
- статическийузел_ptrконечный_узлконстконст_узл_ptr&заголовок]; - Требует: «заголовок» является узлом заголовка дерева. - Эффекты: Возвращает заголовок дерева - Сложность: - Бросает: Ничего. 
- статичныйпустотаswap_treeconst&header1,constnode_ptr&header2] - требует: header1 и header2 должны быть узлами заголовка двух деревьев - Эффекты: Смахивает двумя деревьями. После этого заголовок 1 функции будет содержать ссылки на второе дерево, а заголовок 2 будет иметь ссылки на первое дерево. - Сложность: Постоянная. - Броски: Ничего. 
- статическийпустойswap_nodesконстузел_ptr&узел1констузел_ptr&узел2]; - : узел1 и узел2 не могут быть узлами заголовка двух деревьев - Эффекты: Два узла. После этого функциональный узел 1 будет вставлен в положение узел 2 перед функцией. Узел 2 будет вставлен в положение, которое узел 1 имел перед функцией. - Сложность: Логарифмическая. - Броски: Ничего. - Примечание: Эта функция будет нарушать инварианты упорядочения контейнеров, если узел 1 и узел 2 не эквивалентны в соответствии с правилами упорядочения. - Экспериментальная функция 
- voidswap_nodesnode_ptr&constconstnode_ptr&constconstnode_ptr&constconstnode_ptr&]&] - : node1 и node2 не могут быть узлами заголовка двух деревьев с заголовком header1 и header2. - Эффекты: Два узла. После этого функциональный узел 1 будет вставлен в положение узел 2 перед функцией. Узел 2 будет вставлен в положение, которое узел 1 имел перед функцией. - Сложность: Постоянная. - Броски: Ничего. - Примечание: Эта функция будет нарушать инварианты упорядочения контейнеров, если узел 1 и узел 2 не эквивалентны в соответствии с правилами упорядочения. - Экспериментальная функция 
- статическийпустотазамена_узлаконстузел_ptr&узел_to_be_замена,констузел_ptr&новый_узл] - : узел_to_be_замена должен быть вставлен в дерево и новый_узл не должен быть вставлен в дерево - Эффекты: Заменить узел_to_be_заменить в его положении на дереве новым_узлом. Дерево не нуждается в перебалансировке - Сложность: Логарифмическая. - Броски: Ничего. - Примечание: Эта функция будет нарушать инварианты упорядочивания контейнеров, если новый узел не эквивалентен замещённому в соответствии с правилами упорядочивания узлу_to_be_. Эта функция быстрее, чем стирание и вставка узла, так как не требуется перебалансировки и сравнения. Экспериментальная функция 
- статическийпустотаузел_ptr&узел_to_be_замененный,узел_ptr&заголовок,узел_ptrузел_ptr&новый_узел; - : узел_to_be_замененный должен быть вставлен в дерево с заголовком «заголовок» и новый_узел не должен быть вставлен в дерево - Эффекты[45 Заменить узел_to_be_заменить в его положении на дереве новым_узлом. Дерево не нуждается в перебалансировке - Сложность: Постоянная. - Броски: Ничего. - Примечание: Эта функция будет нарушать инварианты упорядочивания контейнеров, если новый узел не эквивалентен замещённому в соответствии с правилами упорядочивания узлу_to_be_. Эта функция быстрее, чем стирание и вставка узла, поскольку не требуется перебалансировки или сравнения. Экспериментальная функция 
- статическийпустойunlinkconstnode_ptr&node; - Требует: Узел — это узел дерева, но не заголовок. - Эффекты: Развязывает узел и перебалансирует дерево. - Сложность: Средняя сложность — это постоянное время. - Бросок: Ничего. 
- статическийузел_ptrunlink_leftmost_without_rebalanceconstузел_ptr&заголовок] - Требует: Заголовок — это заголовок дерева. - Эффекты: Отключает самый левый узел от дерева и обновляет ссылку заголовка на новый самый левый узел. - Сложность: Средняя сложность — это постоянное время. - Бросок: Ничего. - Примечания: Эта функция ломает дерево, и дерево может использоваться только для дополнительных вызовов unlink_leftmost_without_rebalance. Эта функция обычно используется для достижения постепенного контролируемого разрушения дерева. 
- статическийбоолуникальныйconstconst_node_ptr&узел; - Требуется: «узел» — это узел дерева или узел, инициализированный init [...] или init_node. - Эффекты: Возвращается истинным, если узел инициализируется init() или init_node(). - Сложность: Постоянное время. - Бросок: Ничего. 
- статическийstd::size_tразмерconstconst_node_ptr&заголовок; - Требует: Узел — это узел дерева, но это не заголовок. - Эффекты: Возвращает число узлов поддеревья. - Сложность: Линейное время. - Бросает: Ничего. 
- статическийnode_ptrNext_nodeconstconstnode_ptr&node]; - Требует: «узел» является узлом дерева, за исключением заголовка. - Эффекты: Возвращает следующий узел дерева. - Сложность: Среднее постоянное время. - Бросает: Ничего. 
- статическийузел_ptrпредузелконстузел_ptr&узел]; - Требует: «узел» — это узел от дерева, за исключением самого левого узла. - Эффекты: Возвращает предыдущий узел дерева. - Сложность: Среднее постоянное время. - Бросок: Ничего. 
- статическийпустотныйinitconstnode_ptr&узел; - Требует: «узел» не должен быть частью какого-либо дерева. - Эффекты: После функции уникальный (узел) == истинно. - Сложность: Постоянная. - Бросает: Ничего. - Узлы: Если узел вставлен в дерево, эта функция развращает дерево. 
- статическийпустойinit_headerconstnode_ptr&header; - Требует: Узел не должен быть частью какого-либо дерева. - Эффекты: Инициирует заголовок, чтобы представить пустое дерево. Уникальный (заголовок) == истинно. - Сложность: Константа. - Броски: Ничего. - Узлы: Если узел вставлен в дерево, эта функция развращает дерево. 
- статическийузел_ptrстираетконстузел_ptr&заголовок,констузел_ptr&; - Требует: Заголовок должен быть заголовком дерева, z узла этого дерева и z ! = заголовок. - Эффекты: Стирает узел «z» с дерева заголовком «header». - Сложность: Амортизированное постоянное время. - Бросок: Ничего. 
- шаблон<имя типаbooltransfer_uniqueconstnode_ptr&nodePtrComparecomp,constnode_ptr&constnode_ptr&]&] - : header1 и head NodePtrCompare — функция сравнения дерева1.. 
 - Эффекты: Переносит узел «z» с дерева1 на дерево2, если дерево1 не содержит узел, эквивалентный z. - Возврат: Верно, если узел был переадресован, ложно иначе. - Сложность: Логарифмическая. - Бросает: Если сравнение падает. 
- шаблон<имя типаvoidtransfer_equalconst&заголовок1,заголовокComp,заголовокзаголовок_ptr&заголовок_ptr,заголовок_ptr&]&]требует - [1092 NodePtrCompare — функция сравнения дерева1.. - Эффекты: Переносит узел «z» с дерева1 на дерево2. - Сложность: Логарифмический. - Бросок: Если сравнение падает. 
- шаблон<имя типа,статическоепустотаклонconstconst_node_ptr&источник_header,узел_ptr&целевой_header,клон Требует«клонером» должен быть функциональный объект, принимающий узел_ptr и возвращающий ему новый клонированный узел. Диспозитор должен взять узел_ptr и не должен бросать.- Эффекты: Первое опорожняет дерево-мишень, называя- void disposer::operator()(const node_ptr &)для каждого узла дерева, кроме заголовка. 1171
 - Затем дублирует все дерево, на которое указывает «source_header», клонируя каждый исходный узел с помощью- node_ptr Cloner::operator()(const node_ptr &)для получения узлов целевого дерева. Если «клонер» бросает, клонированные узлы-мишени утилизируются с помощью- void disposer (const node_ptr &).
 - Сложность: Линейный к числу элемента дерева-источника плюс число элементов дерева-мишени при вызове этой функции. - Бросок: Если клонер-функтор бросит. Если это происходит, узлы-мишени удаляются. 
- шаблон<имя типаДиспозитор>статическийпустотаClear_and_disposeconstconstnode_ptr&заголовок,] Требует: Диспозитор должен быть функцией объекта, принимающей параметр node_ptr, и не должен бросать.- Эффекты: Исчезает дерево-мишень, вызывающее- пустоту утилизатора::оператор()(const node_ptr &)для каждого узла дерева, кроме заголовка.
 - Сложность: Линейный к числу элемента дерева-источника плюс. количество элементов дерева-мишени при вызове этой функции. - Бросок: Если клонер-функтор бросит. Если это происходит, узлы-мишени удаляются. 
- шаблон<имя типаKeyNodePtrCompare>статическоестатическоенижнее_boundконстconst_node_ptr&конст&],констконст&ключ,KeyNodePtrCompare; - [13 KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare может сравнить KeyType с узлом дерева_ptrs. - : Возвращает узел_ptr к первому элементу, который не меньше «ключа» согласно «комп» или «заголовку», если этот элемент не существует. - Сложность: Логарифмический. - Броски: Если "комп" бросит. 
- шаблон<имя типаKeyType,имя типаKeyNodePtrCompare>статическийверхний_boundconstconst_node_ptr&заголовок&],ключ,KeyNodePtrCompare; - : «заголовок» должен быть узлом заголовка дерева. KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare может сравнить KeyType с узлом дерева_ptrs. - Эффекты: Возвращает узел_ptr к первому элементу, который больше, чем "ключ" в соответствии с "комп" или "заголовок", если этот элемент не существует. - Сложность: Логарифмический. - Бросает: Если "комп" бросит. 
- шаблон<имя типа,имя типаKeyNodePtrCompare>статическийузел_ptrнайдитеconstconst_node_ptr&const&],&ключ - : «заголовок» должен быть узлом заголовка дерева. KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare можно сравнить KeyType with tree's node_ptrs. - Эффекты: Возвращает узел_ptr к первому элементу, который эквивалентен «ключу» согласно «комп» или «заголовку», если этот элемент не существует. - Сложность: Логарифмический. - Бросок: Если "комп" бросит. 
- шаблон<имя типаKeyNodePtrCompare>статическоеstdпараnode_ptrnode_ptr>node_ptr,equal_rangeconst_node_ptr&const&],KeyNodePtrCompare [14 KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare может сравнить KeyType с узлом дерева_ptrs.- : Возвращает пару node_ptr, делимитирующую диапазон, содержащий все элементы, которые эквивалентны «ключу» в соответствии с «комп» или пустой диапазон, который указывает положение, в котором эти элементы были бы, если нет эквивалентных элементов. - Сложность: Логарифмический. - Бросок: Если "комп" бросит. 
 
- шаблон<типовое имяKeyType,статическоеstd::пара<узел_ptr>ограниченный_диапазонконст_нод_ptrконст&констконст&нижний_ключ&верхний_ключ [1555 KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare может сравнить KeyType с node_ptrs дерева. Нижний ключ не должен быть больше верхнего ключа в соответствии с компом. Если «нижний_ключ» == «верхний_ключ», то (слева_закрыто) должен быть истинным.- Эффекты: Возвращает пару со следующими критериями: - первый = нижний_связанный (нижний_ключ), если левый_закрытый, верхний_связанный (нижний_ключ) в противном случае - второй = верхний_связанный (верхний_ключ), если правый_закрытый, нижний_связанный (верхний_ключ) в противном случае - Сложность: Логарифмический. - Бросает: Если "комп" бросает. - Примечание: Эта функция может быть более эффективной, чем вызов top_bound и lower_bound для low_key и upper_key. - Примечание: Экспериментальная функция, интерфейс может измениться. 
 
- шаблон<имя типаKeyNodePtrCompare>статическоеstd::размер_tсчетconstconst_node_ptr&constKeyType&ключ,KeyNodePtrCompare; [ KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare может сравнить KeyType с узлом дерева_ptrs.- Эффекты: Возвращает число элементов с ключом, эквивалентным «ключу» по «комп». - Сложность: Логарифмический. - Бросок: Если "комп" бросит. 
- шаблон<имя типастатическийстатическийвставка_equal_upper_boundconstnode_ptr&констиконстконстконстконстконст&новый_node; - [ "h" должно быть узлом заголовка дерева. NodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. NodePtrCompare сравнивает два узла_ptrs. - ЭффектыВставляет новый узел в дерево перед верхней границей согласно "комп". - Сложность: Средняя сложность для вставочного элемента является наиболее логарифмической. - Броски: Если "комп" бросит. 
- шаблон<>статическийвставка_equal_lower_boundconstnode_ptr&hconstновый_node Требует: "h" должно быть узлом заголовка дерева. NodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. NodePtrCompare сравнивает два узла_ptrs.- : Вставляет новый узел в дерево перед нижней границей согласно "комп". - Сложность: Средняя сложность для вставочного элемента является наиболее логарифмической. - Броски: Если "комп" бросит. 
- шаблонимя типа>статическийконстзаголовок&заголовокконстконстконстконст&подсказкаконстконстконстконстконстконстконстконстNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. NodePtrCompare сравнивает два узла_ptrs. «Нет» — это узел из дерева «головы».- Эффекты: Вставляет новый_узел в дерево, используя «наконечник» в качестве подсказки, где он будет вставлен. Если «подсказка» находится на верхнем уровне, вставка занимает постоянное время (два сравнения в худшем случае). - Сложность: Логарифмический в целом, но это амортизированное постоянное время, если новый_узел вставлен непосредственно перед "намек". - Бросает: Если "комп" бросит. 
 
- статическийузел_ptrвставка_доузел_ptrузел_ptr&заголовокзаголовок,узел_ptrузел_ptr&узел_ptrузел_ptr&]новый_узел - Требует: "заголовок" должен быть узлом заголовка дерева. "pos" должен быть действительным итератором или узлом заголовка (конца). "pos" должен быть итератором, указывающим на преемника "new_node" после вставки в соответствии с порядком уже вставленных узлов. Эта функция не проверяет «по» и это предварительное условие должно быть гарантировано абонентом. - Эффекты: Вставляет новый узел в дерево до "по". - Сложность: Постоянное время. - Броски: Ничего. - Примечание: Если «pos» не является преемником вновь вставленных инвариантов дерева «new_node», они могут быть сломаны. 
- статическийпустотаpush_backconstnode_ptr&header,constnode_ptr&new_node; - Требует: "заголовок" должен быть узлом заголовка дерева. "new_node" должен быть, согласно используемому порядку, не меньше, чем наибольший вставленный ключ. - Эффекты: Вставляет новый_узел в дерево до "по". - Сложность: Постоянное время. - Бросает: Ничего. - Примечание: Если "new_node" меньше, чем наибольшие инварианты вставленного ключевого дерева, то они разбиваются. Эта функция немного быстрее, чем использование «insert_before». 
- статическийпустотаpush_frontconstnode_ptr&header,constnode_ptr&new_node; - Требует: "заголовок" должен быть узлом заголовка дерева. "new_node" должен быть, согласно используемому порядку, не больше, чем самый низкий вставленный ключ. - Эффекты: Вставляет новый узел в дерево до "по". - Сложность: Постоянное время. - Бросает: Ничего. - Примечание: Если "new_node" больше, чем инварианты наименьшего вставленного ключевого дерева, то они разбиваются. Эта функция немного быстрее, чем использование «insert_before». 
- шаблон<имя типаKeyType,имя типастатическоеstdпара<node_ptrbool>],boolвставка_unique_checkconstconst_node_ptr&"заголовок" должен быть узлом заголовка дерева. KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. Узел PtrCompare сравнивает KeyType with node_ptr.- Эффекты: Проверяет, есть ли эквивалентный узел для «ключа» в дереве в соответствии с «комп» и получает необходимую информацию для реализации вставки узла постоянного времени, если нет эквивалентного узла. - Возвращение: При наличии эквивалентного значения возвращает пару, содержащую node_ptr, к уже существующему узлу и ложному. Если нет эквивалентного ключа, может быть вставлен возврат, верный в булевой паре возврата и заполняющий «commit_data», который предназначен для использования с функцией «insert_commit» для достижения функции вставки в постоянное время. - Сложность: Средняя сложность в большинстве логарифмическая. - Броски: Если "комп" бросает. - Примечания: Эта функция используется для повышения производительности при строительстве узла дорого и пользователь не хочет иметь два эквивалентных узла в дереве: если есть эквивалентное значение, построенный объект должен быть отброшен. Часто часть узла, которая используется для наложения заказа, намного дешевле в конструировании, чем узел, и эта функция предлагает возможность использовать эту часть для проверки того, будет ли вставка успешной. - Если проверка прошла успешно, пользователь может построить узел и использовать «insert_commit» для вставки узла в постоянное время. Это придает полную логарифмическую сложность вставке: check(O(log(N)) + commit(O(1)). - "commit_data" остается действительным для последующего "insert_unique_commit" только в том случае, если из набора больше не вставлено или стерто никаких объектов. 
 
- шаблон<имя типаKeyNodePtrComparestdпара<node_ptrboolconst&]const_node_ptrconstconstnode_ptr&KeyNodePtrCompare,KeyNodePtrCompare [ KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. NodePtrCompare сравнивает KeyType с node_ptr. "hint" - это узел из дерева "header".- Эффекты: Проверяет, есть ли эквивалентный узел для «ключа» в дереве в соответствии с «компом», используя «наконечник» в качестве подсказки, где он должен быть вставлен, и получает необходимую информацию для реализации вставки узла постоянного времени, если нет эквивалентного узла. Если «подсказка» находится в верхнем узле, функция имеет постоянную временную сложность (два сравнения в худшем случае). - Возвращение: При наличии эквивалентного значения возвращает пару, содержащую node_ptr, к уже существующему узлу и ложному. Если нет эквивалентного ключа, может быть вставлен возврат, верный в булевой паре возврата и заполняющий «commit_data», который предназначен для использования с функцией «insert_commit» для достижения функции вставки в постоянное время. - Сложность: Средняя сложность в лучшем случае логарифмическая, но это амортизированное постоянное время, если новый_узел должен быть вставлен непосредственно перед «подсказкой» - Бросок: Если "комп" бросит. - Примечания: Эта функция используется для повышения производительности при строительстве узла дорого и пользователь не хочет иметь два эквивалентных узла в дереве: если есть эквивалентное значение, построенный объект должен быть отброшен. Часто часть узла, которая используется для наложения заказа, намного дешевле в конструировании, чем узел, и эта функция предлагает возможность использовать эту часть для проверки того, будет ли вставка успешной. - Если проверка прошла успешно, пользователь может построить узел и использовать «insert_commit» для вставки узла в постоянное время. Это придает полную логарифмическую сложность вставке: check(O(log(N)) + commit(O(1)). - "commit_data" остается действительным для последующего "insert_unique_commit" только в том случае, если из набора больше не вставлено или стерто никаких объектов. 
 
- статическоепустоевставка_unique_commitconstnode_ptr&заголовок,constnode_ptr&вставка_commit_data&commit_data; - : "заголовок" должен быть узлом заголовка дерева. "commit_data" должно быть получено из предыдущего вызова "insert_unique_check". Никакие объекты не должны были быть вставлены или стерты из набора между «insert_unique_check», который заполнил «commit_data» и призывом «insert_commit» - : Вставляет новый_узел в набор, используя информацию, полученную из "commit_data", которую заполнил предыдущий "insert_check". - Сложность: Постоянное время. - Броски: Ничего. - Примечания: Эта функция имеет смысл только в том случае, если ранее была выполнена «insert_unique_check» для заполнения «commit_data». Не следует вставлять или стирать значение между вызовами «insert_check» и «insert_commit». 
- статическийбоолявляется_headerconstconst_node_ptr&p]; - Требует: p является узлом дерева. - Эффекты: Возвращается истинно, если p - заголовок дерева. - Сложность: - Бросает: Ничего.