FastLED 3.9.15
Loading...
Searching...
No Matches

◆ insertImpl()

template<typename T, typename Compare = less<T>, typename Allocator = allocator_slab<char>>
template<typename U>
fl::pair< iterator, bool > fl::RedBlackTree< T, Compare, Allocator >::insertImpl ( U && value)
inlineprivate

Definition at line 259 of file rbtree.h.

259 {
260 Node* parent = nullptr;
261 Node* current = root_;
262
263 while (current != nullptr) {
264 parent = current;
265 if (comp_(value, current->data)) {
266 current = current->left;
267 } else if (comp_(current->data, value)) {
268 current = current->right;
269 } else {
270 return fl::pair<iterator, bool>(iterator(current, this), false);
271 }
272 }
273
274 Node* newNode = alloc_.allocate(1);
275 if (newNode == nullptr) {
276 return fl::pair<iterator, bool>(end(), false);
277 }
278
280
281 if (parent == nullptr) {
282 root_ = newNode;
283 } else if (comp_(newNode->data, parent->data)) {
284 parent->left = newNode;
285 } else {
286 parent->right = newNode;
287 }
288
290 ++size_;
291
292 return fl::pair<iterator, bool>(iterator(newNode, this), true);
293 }
iterator end()
Definition rbtree.h:539
Compare comp_
Definition rbtree.h:56
void insertFixup(Node *z)
Definition rbtree.h:96
fl::size size_
Definition rbtree.h:55
NodeAllocator alloc_
Definition rbtree.h:57
Node * root_
Definition rbtree.h:54

Referenced by fl::RedBlackTree< value_type, PairCompare, Allocator >::insert(), and fl::RedBlackTree< value_type, PairCompare, Allocator >::insert().

+ Here is the caller graph for this function: