- static node_ptrget_headerconst_node_ptr &; - :  - :Возвращает заголовок дерева. - :Логарифмический. - Броски:Ничего.  
- static node_ptrbegin_nodeconst_node_ptr &; - :  - : Возвращает первый узел дерева, заголовок если дерево пустое. - : Постоянное время. -  Броски: Ничего.  
- static node_ptrend_nodeconst_node_ptr &; - :  - : Возвращает заголовок дерева. - : Постоянное время. -  Броски: Ничего.  
- static voidswap_treenode_ptr , constnode_ptr &;; - : header1 и header2 должны быть узлами заголовка двух деревьев. - Последствия: Свопы двух деревьев. После этого заголовок функции1 будет содержать ссылки на второе дерево, а заголовок2 будет иметь ссылки на первое дерево. -  Сложность: Константа. -  Броски: Ничего.  
- static voidswap_nodesnode_ptr , const node_ptr & node2;; - : узел  и узел2 не могут быть заголовочными узлами двух деревьев. - Последствия: Замена двух узлов. После этого функциональный узел 1 будет вставлен в положение узел 2 перед функцией. Узел 2 будет вставлен в положение, которое узел 1 имел перед функцией. - : Логарифмический. - Броски: Ничего. - Примечание: Эта функция разрушит инварианты упорядочивания контейнеров, если узел 1 и узел 2 не эквивалентны согласно правилам упорядочивания. - Экспериментальная функция  
- static voidnode_ptr, node_ptr , node_ptr ,   node2,   node_ptr &;; : узел 1 и узел 2 не могут быть узлами заголовка двух деревьев с заголовком header1 и header2.- :2>: Swaps два узла. После этого функциональный узел 1 будет вставлен в положение узел 2 перед функцией. Узел 2 будет вставлен в положение, которое узел 1 имел перед функцией. - : Константа. - Броски: Ничего. - Примечание: Эта функция разрушит инварианты упорядочивания контейнеров, если узел 1 и узел 2 не эквивалентны согласно правилам упорядочивания. - Экспериментальная функция  
- static voidreplace_node& node_to_be_replaced,node_ptr & new_node;new_node; : node_to_be_replaced должен быть вставлен в дерево, а new_node не должен быть вставлен в дерево.- : Заменить узел_to_be_replaced в его положении в дереве новым_node. Дерево не нуждается в перебалансировке  -  Сложность: Логарифмический. - : Ничего. - Примечание: Эта функция разрушит инварианты упорядочивания контейнера, если новый_узл не эквивалентен узлу_to_be_заменен согласно правилам упорядочивания. Эта функция быстрее, чем стирание и вставка узла, так как не требуется перебалансировки и сравнения. Экспериментальная функция  
- static voidNode_to_be_replaced,const &header, node_ptr &new_node;new_node;new_node; : node_to_be_replaced должен быть вставлен в дерево с заголовком "header" и new_node не должен быть вставлен в дерево.- : Заменить узел_to_be_replaced в его положении в дереве с новым_node. Дерево не нуждается в перебалансировке -  Сложность: Постоянный. -  Броски: Ничего. - Примечание: Эта функция разрушит инварианты упорядочивания контейнеров, если новый_узл не эквивалентен узлу_to_be_, замещенному согласно правилам упорядочивания. Эта функция быстрее, чем стирание и вставка узла, поскольку не требуется перебалансировки или сравнения. Экспериментальная функция  
- static voidunlinknode_ptr &; : Узел - это узел дерева, но не заголовок.- Средняя сложность - постоянное время. - Броски: Ничего.  
- static node_ptrunlink_leftmost_without_rebalancenode_ptr;: Заголовок : Эффекты : Средняя сложность : Средние сложности: Броски: Ничего.- Примечания : Эту функцию можно использовать только для вызовов unlink_leftmost_without_rebalance. Эта функция обычно используется для достижения постепенного контролируемого разрушения дерева.  
 
- static boolconstconst_node_ptr ;; Требуется : «узел» инициализируется init(...) или init_node.- : Сложность: Постоянное время. -  Броски: Ничего.  
- static std::size_tconstconst_node_ptr &; - : Узел : Эффекты : Возвращает количество узлов поддеревья. - : Линейное время. -  Броски: Ничего.  
- static node_ptrnext_node(const node_ptr & node; - : «узел» является узлом дерева, за исключением заголовок. - Последствия: Возвращает следующий узел дерева. - Комплексность: Среднее постоянное время. - Броски: Ничего.  
- static node_ptrprev_nodenode_ptr &; - : : Возвращает предыдущий узел дерева. - : Средняя постоянная времени. - Броски: Ничего.  
- static voidinitnode_ptr;: «Узел» не должен быть частью какого-либо дерева.- : После уникальной функции (узел) == истинно. - : Константа. - : Ничего. - Узлы: Если узел вставлен в дерево, эта функция повреждает дерево.  
 
- static voidinit_headernode_ptr &header; - : Узел не должен быть частью какого-либо дерева. - Последствия: Инициализирует заголовок для представления пустого дерева. Уникальный (заголовок) == истинно. - : Константа. - Броски: Ничего. - Узлы: Если узел вставлен в дерево, эта функция портит дерево.  
- static node_ptrnode_ptr , const node_ptr &;; - : Заголовок должен быть заголовком дерева, z узла этого дерева и z !=заголовок. - Сложность:Амортизированное постоянное время. - Броски: Ничего.  
- templatetypename> booltransfer_uniqueconstnode_ptr , const comp, constnode_ptr , const& &; - : заголовки деревьев tree1 и tree2 соответственно, z незаголовочный узел дерева1. NodePtrCompare - функция сравнения дерева1.. - : Переносит узел "z" с дерева1 на дерево2, если дерево1 не содержит узел, эквивалентный z. - : Верно, если узел был трассферирован, ложно иначе. - : Логарифмический. -  Броски: Если сравнение бросает.  
- templatetypename>voidtransfer_equalnode_ptr,constcomp,constnode_ptr &node_ptr&; - : заголовки деревьев tree1 и tree2 соответственно, z незаголовочный узел tree1. NodePtrCompare — функция сравнения дерева1.. -  Эффекты: Перенос узла «z» с дерева1 на дерево2. - Сложность: Логарифмическая. - Броски: Если сравнение бросает.  
- templatetypename Cloner, Disposer> static voidcloneconst const_node_ptr , const source_header& target_header, Cloner disposer, - : «клонер» должен быть функциональным объектом, принимающим узел_ptr и возвращающим новый клонированный узел из него. «Утилизатор» должен взять узел_ptr и не должен выбрасывать. - Последствия: Сначала опустошается целевое дерево, вызывающее - пустой узел::оператор()(const node_ptr &)для каждого узла дерева, кроме заголовка.
 - Затем дублируется все дерево, на которое указывает «source_header» клонирование каждого узла источника с - node_ptr Cloner::operator()(const node_ptr &)для получения узлов целевого дерева. Если «клонер» бросает, то клонированные узлы-мишени утилизируются с помощью- void disposer(const node_ptr &).
 - Комплексность: Линейное число элемента дерева-источника плюс число элементов дерева-мишени при вызове этой функции. - Броски: Если клонер-функтор бросит. Если это происходит, узлы-мишени удаляются.  
- templatetypename>voidclear_and_disposenode_ptr , disposer,; - : «disposer» должен быть объектной функцией, принимающей параметр node_ptr: Эффекты : Пустоты целевого дерева, вызывающие - void disposer::оператор()(const node_ptr &)для каждого узла дерева, кроме заголовка.
 - : Линейность к числу элемента дерева-источника плюс дерево-источник. Количество элементов дерева-мишени при вызове этой функции. -  Броски: Если клонер-функтор бросит. Если это происходит, узлы-мишени удаляются.  
- template<typename KeyType, typename KeyNodePtrCompare> static node_ptrlower_bound(constconst_node_ptr , constKeyType &KeyNodePtrCompare); : «заголовок» должен быть узлом заголовка дерева. KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare можно сравнить KeyType with tree's node_ptrs.- Последствия: Возвращает узел_ptr к первому элементу, который не меньше «ключа» по «комп» или «заголовку», если этот элемент не существует. - Комплексность: Логарифмическая. - Броски: Если «комп» бросает.  
- template<typename KeyType, typename KeyNodePtrCompare> static node_ptrupper_bound(constconst_node_ptr , constKeyType &KeyNodePtrCompare); : «заголовок» должен быть узлом заголовка дерева. KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare можно сравнить KeyType with tree's node_ptrs.- Последствия: Возвращает узел_ptr к первому элементу, который больше «ключа» по «комп» или «заголовку», если этот элемент не существует. - Комплексность: Логарифмическая. - Броски: Если «комп» бросает.  
- template<typename KeyType, typename KeyNodePtrCompare> static node_ptrfind(const_node_ptr & constKeyType & KeyNodePtrCompare); : «заголовок» должен быть узлом заголовка дерева. KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare можно сравнить KeyType with tree's node_ptrs.- Последствия: возвращает узел_ptr к первому элементу, который эквивалентен "ключу" согласно "комп" или "заголовку", если этот элемент не существует. - Комплексность: Логарифмическая. - Броски: Если "комп" бросает.  
- template<typename KeyType, typename KeyNodePtrCompare> static std, node_ptr equal_range(const & const KeyType &KeyNodePtrCompare; - : «заголовок» должен быть узлом заголовка дерева. KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare можно сравнить KeyType with tree's node_ptrs. - Последствия: Возвращает пару node_ptr, делимитирующую диапазон, содержащий все элементы, которые эквивалентны «ключу» согласно «компу» или пустому диапазону, который указывает положение, где эти элементы были бы, если бы не было эквивалентных элементов. - Комплексность: Логарифмическая. - Броски: Если «комп» бросает.  
- template<typename KeyType, typename KeyNodePtrCompare> staticstd, node_ptr bounded_range constconst_node_ptr const_node_ptr, const & lower_key, top_key, KeyNodePtrCompare comp, bool left_closed, bool left_closed, - : «заголовок» должен быть узлом заголовка дерева. KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare может сравнить KeyType с node_ptrs дерева. Нижний ключ не должен быть больше верхнего ключа в соответствии с компом. Если «нижний_ключ» == «верхний_ключ», (слева_закрыто)  - : Возвращает пару со следующими критериями: - first = low_bound(lower_key) if left_closed, upper_bound(lower_key) otherwise -  second = upper_bound(upper_key) if right_closed, lower_bound(upper_key) if right_closed, lower_bound(upper_key) if right_closed, lower_76>: Logarithmic. - : Если бросает "comp". - Примечание: Эта функция может быть более эффективной, чем вызов upper_bound и lower_bound для low_key и upper_key. - : Экспериментальная функция, интерфейс может измениться.  
- template<typename KeyType, typename KeyNodePtrCompare> static::size_tconstconst_node_ptr & constKeyType &KeyNodePtrCompare; - : "header" должен быть узлом заголовка дерева. KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. KeyNodePtrCompare можно сравнить KeyType with tree's node_ptrs. - Последствия: Возвращает число элементов с ключом, эквивалентным "ключу" по "комп". - Комплексность: Логарифмическая. - Броски: Если "комп" бросает.  
- templatetypenameNodePtrCompare> static node_ptrinsert_equal_upper_bound(const &constnode_ptr & new_nodecompare; - : "h" должен быть узлом заголовка дерева. NodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. NodePtrCompare сравнивает два узла_ptrs. - Последствия: Вставляет новый_узел в дерево перед верхней границей согласно "комп". - Сложность: Средняя сложность для вставочного элемента является наиболее логарифмической. - Броски: Если "комп" бросает.  
- templatetypenameNodePtrCompare> static node_ptrinsert_equal_lower_bound(const &constnode_ptr & new_nodecompare; - : "h" должен быть узлом заголовка дерева. NodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. NodePtrCompare сравнивает два узла_ptrs. - Последствия: Вставляет новый_узел в дерево перед нижней границей в соответствии с "комп". - Комплексность: Средняя сложность для элемента вставки является наиболее логарифмической. - Броски: Если "комп" бросает.  
- templatetypenameNodePtrCompare>static node_ptrinsert_equalconst&constnode_ptr &node_ptr & new_node,new_nodecompare; - : «заголовок» должен быть узлом заголовка дерева. NodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. NodePtrCompare сравнивает два узла_ptrs.  - Последствия: Вставляет новый_узел в дерево, используя "наконечник" в качестве подсказки к тому, где он будет вставлен. Если «подсказка» является верхним_связанным, вставка занимает постоянное время (два сравнения в худшем случае). - Сложность: Логарифмическая в целом, но это амортизированное постоянное время, если новый_узел вставлен непосредственно перед «подсказкой». - Броски: Если «комп» бросает.  
- static node_ptrinsert_beforenode_ptr , const node_ptr ,  pos,  const node_ptr &new_node;; - : "header" должен быть узлом заголовка дерева. "pos" должен быть действительным итератором или узлом заголовка (конца). "pos" должен быть итератором, указывающим на преемника "new_node" после вставки в соответствии с порядком уже вставленных узлов. Эта функция не проверяет «pos» и это предварительное условие должно быть гарантировано абонентом. - : Вставляет новый_узел в дерево до «pos». - : Сложность: Постоянное время. -  Броски: Ничего. - Примечание: Если «pos» не является преемником вновь вставленных инвариантов дерева «new_node» может быть нарушено.  
- static voidpush_back(const&constconstnode_ptr& new_node;; - : "header" должен быть узлом заголовка дерева. "new_node" должен быть, согласно используемому порядку, не менее, чем наибольший вставленный ключ. - : Вводит новый_node в дерево до "pos". - : Сложность: Постоянное время. -  Броски: Ничего. - Примечание: Если "new_node" меньше, чем наибольшие вставленные инварианты ключевого дерева сломаны. Эта функция немного быстрее, чем использование «insert_before».  
- static voidpush_frontnode_ptr , constconst const node_ptr & new_node;; - : "header" должен быть узлом заголовка дерева. "new_node" должен быть, согласно используемому порядку, не больше, чем самый низкий вставленный ключ. - : Вставляет новый_node в дерево перед "pos". - : Сложность: Постоянное время. -  Броски: Ничего. - Примечание: Если "new_node" больше, чем самые низкие вставленные инварианты ключевого дерева сломаны. Эта функция немного быстрее, чем использование «insert_before».  
- template<typename KeyType, typename KeyNodePtrCompare> staticstd, bool > inert_unique_checkconst const_node_ptr & KeyType&KeyNodePtrComparecommit_data && - : «заголовок» должен быть узлом заголовка дерева. KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. Узел PtrCompare сравнивает KeyType with a node_ptr. - Последствия: Проверяет, есть ли эквивалентный узел для "ключа" в дереве по "комп" и получает необходимую информацию для реализации вставки узла постоянного времени, если нет эквивалентного узла. - Возвращает : Если есть эквивалентное значение возвращает пару, содержащую узел_ptr, к уже существующему узлу и ложному. Если эквивалентный ключ не может быть вставлен в булевой ключ возвращаемой пары и заполняет «commit_data», который предназначен для использования с функцией «insert_commit» для достижения функции вставки в постоянное время. - Сложность: Средняя сложность является наиболее логарифмической. - : Броски: Если «комп» бросает. - Примечания: Эта функция используется для повышения производительности при построении узла дорого и пользователь не хочет иметь два эквивалентных узла в дереве: если есть эквивалентное значение, построенный объект должен быть отброшен. Много раз, часть узла, которая используется, чтобы навязать заказ, намного дешевле, чем узел, и эта функция предлагает возможность использовать эту часть, чтобы проверить, будет ли вставка успешной. -  Если проверка успешна, пользователь может построить узел и использовать «insert_commit» для вставки узла в постоянное время. Это придает полную логарифмическую сложность вставке: check(O(log(N)) + commit(O(1)). -  "commit_data" остается действительным для последующего "insert_unique_commit" только в том случае, если из набора больше не вставлено или стерто никаких объектов.  
- template<typename KeyType, typename KeyNodePtrCompare> staticstd, bool > constconst_node_ptr & const & node_ptr &KeyNodePtrCompare, inert_commit_data&; - : «заголовок» должен быть узлом заголовка дерева. KeyNodePtrCompare - это функциональный объект, который вызывает строгое слабое упорядочение, совместимое со строгим слабым упорядочением, используемым для создания дерева. NodePtrCompare сравнивает KeyType with a node_ptr. "hint" is node from the "header"'s tree. - Effects: Проверяет, есть ли эквивалентный узел "ключу" в дереве согласно "comp", используя "hint" в качестве подсказки к тому, где он должен быть вставлен, и получает необходимую информацию для реализации вставки узла постоянного времени, если нет эквивалентного узла. Если «подсказка» является верхней_связанной, функция имеет постоянную временную сложность (два сравнения в худшем случае). -  Возвращает: Если есть эквивалентное значение возвращает пару, содержащую узел_ptr, к уже существующему узлу и ложную. Если эквивалентный ключ не может быть вставлен в булевой ключ возвращаемой пары и заполняет «commit_data», который предназначен для использования с функцией «insert_commit» для достижения функции вставки в постоянное время. - Сложность : Средняя сложность в лучшем случае логарифмическая, но это амортизированное постоянное время, если новый_узел должен быть вставлен непосредственно перед «подсказкой». -  : Если «комп» бросает. - Примечания : Эта функция используется для повышения производительности при построении узла дорого и пользователь не хочет иметь два эквивалентных узла в дереве: если есть эквивалентное значение, построенный объект должен быть отброшен. Много раз, часть узла, которая используется, чтобы навязать заказ, намного дешевле построить, чем узел, и эта функция предлагает возможность использовать эту часть, чтобы проверить, будет ли вставка успешной. -  Если проверка успешна, пользователь может построить узел и использовать «insert_commit» для вставки узла в постоянное время. Это придает полную логарифмическую сложность вставке: check(O(log(N)) + commit(O(1)). -  "commit_data" остается действительным для последующего "insert_unique_commit" только в том случае, если из набора не вставлено или стерто больше объектов.  
- static voidinsert_unique_commit(node_ptr , const node_ptr & new_value, const insert_commit_data & commit_data;; - : «заголовок» должен быть узлом заголовка дерева. "commit_data" должно быть получено из предыдущего вызова "insert_unique_check". Никакие объекты не должны были быть вставлены или удалены из набора между «insert_unique_check», который заполнил «commit_data» и вызовом «insert_commit». - : Вставьте новый_node в набор, используя информацию, полученную из «commit_check», которую заполнил предыдущий «insert_check». - : Постоянное время. -  Броски: Ничто. - Примечания: Эта функция имеет смысл только в том случае, если ранее была выполнена «insert_unique_check» для заполнения «commit_data». Не следует вставлять или стирать значение между вызовами «insert_check» и «insert_commit».  
- static boolis_headerconst_node_ptr &; - : Требуется :: - : Сложность: Constant. - Броски: Ничего.