19template <
class TKey,
class TItem,
class TKeyComp,
class TAlloc,
class TNode>
24template <
class TKey,
class TItem,
class TKeyComp,
class TAlloc,
class TNode>
26 requires(!std::is_invocable_v<T>)
29 auto node = node_alloc_traits::allocate(allocator, 1);
32 node_alloc_traits::construct(allocator, std::to_address(node),
33 std::forward<T>(item));
35 node_alloc_traits::deallocate(allocator, node, 1);
42template <
class TKey,
class TItem,
class TKeyComp,
class TAlloc,
class TNode>
43template <
class TCallback>
44 requires std::is_invocable_v<TCallback>
47 TCallback &&callback) {
48 auto node = node_alloc_traits::allocate(allocator, 1);
51 node_alloc_traits::construct(allocator, std::to_address(node),
54 node_alloc_traits::deallocate(allocator, node, 1);
61template <
class TKey,
class TItem,
class TKeyComp,
class TAlloc,
class TNode>
64 node_alloc_traits::destroy(allocator, std::to_address(node));
65 node_alloc_traits::deallocate(allocator, node, 1);
70template <
class TKey,
class TItem,
class TKeyComp,
class TAlloc,
class TNode>
74 if (node ==
nullptr) {
77 while (node->left !=
nullptr) {
83template <
class TKey,
class TItem,
class TKeyComp,
class TAlloc,
class TNode>
87 if (node ==
nullptr) {
90 while (node->right !=
nullptr) {
Header for functions and classes common to all avl trees.
Base class for avl trees.
Definition _avl_common.hpp:76
static node_ptr min_from(node_ptr node) noexcept
Finds the minimum value starting at the given node.
Definition _avl_common.ipp:72
virtual ~avl_tree_base()=0
static node_ptr max_from(node_ptr node) noexcept
Finds the maximum value starting at the given node.
Definition _avl_common.ipp:85
avl_node_ptr< node_type, allocator_type > node_ptr
The node pointer type.
Definition _avl_common.hpp:90
node_ptr create_node(T &&item)
Constructs a new node with the given item.
Definition _avl_common.ipp:28
void destroy_node(node_ptr node) noexcept
Destroys the node and frees the memory.
Definition _avl_common.ipp:62
Declarations of the persistent map.
Definition _avl.hpp:14