Physically remove erased elements from the heap
| 444 | private: |
| 445 | // Physically remove erased elements from the heap |
| 446 | void FixHeap() { |
| 447 | if (Removed.empty()) { |
| 448 | return; |
| 449 | } |
| 450 | |
| 451 | Heap.erase(std::remove_if(Heap.begin(), Heap.end(), [this](TItem* item) { |
| 452 | return this->Removed.contains(item); |
| 453 | }), |
| 454 | Heap.end()); |
| 455 | MakeHeap(Heap.begin(), Heap.end(), THeapComparator()); |
| 456 | Removed.clear(); |
| 457 | Size = Heap.size(); |
| 458 | } |
| 459 | |
| 460 | private: |
| 461 | TVector<TItem*> Heap; |