27 # ifndef TPL_DYNBINHEAP_H 28 # define TPL_DYNBINHEAP_H 31 # include <ah-args-ctor.H> 34 # include <tpl_binNodeUtils.H> 35 # include <tpl_binHeap.H> 37 using namespace Aleph;
54 template <
class T,
class Compare = Aleph::less<T>>
60 public StlAlephIterator<DynBinHeap<T, Compare>>
78 T & __insert(Node * p) noexcept
85 src.for_each_in_preorder([
this] (Node * p)
87 __insert(
new Node (p->get_key()));
141 return __insert(
new Node (item));
146 return __insert(
new Node (std::forward<T>(item)));
149 T & append(
const T & item)
151 return __insert(
new Node (item));
154 T & append(T && item)
156 return __insert(
new Node (std::forward<T>(item)));
175 return insert(std::forward<T>(item));
188 T return_value = std::move(node->get_key());
227 Node * node = Node::key_to_node(data);
246 void remove(T & data) noexcept
278 template <
class Operation>
279 bool traverse(Operation & op) noexcept(noexcept(op))
281 return this->preorder_traverse([&op] (Node * p)
282 {
return op(p->get_key()); });
285 template <
class Operation>
286 bool traverse(Operation && op = Operation()) noexcept(noexcept(op))
291 template <
class Operation>
292 bool traverse(Operation & op)
const noexcept(noexcept(op))
294 return this->preorder_traverse([&op] (Node * p)
295 {
return op(p->get_key()); });
298 template <
class Operation>
299 bool traverse(Operation && op = Operation())
const noexcept(noexcept(op))
301 return traverse<Operation>(op);
304 struct Iterator :
public Base::Iterator
307 using Base =
typename Base::Iterator;
309 const T & get_curr_ne()
const noexcept
311 return KEY(Base::get_curr_ne());
313 const T & get_curr()
const {
return KEY(Base::get_curr()); }
319 # endif // TPL_DYNBINHEAP_H
Definition: htlist.H:1290
T & put(const T &item)
Definition: tpl_dynBinHeap.H:168
T & insert(const T &item)
Definition: tpl_dynBinHeap.H:139
T getMin()
Definition: tpl_dynBinHeap.H:184
void update(T &data) noexcept
Definition: tpl_dynBinHeap.H:225
Node * insert(Node *p) noexcept
Definition: tpl_binHeap.H:587
Node * top()
Definition: tpl_binHeap.H:754
T getMax()
Definition: tpl_dynBinHeap.H:196
~DynBinHeap()
Destructor.
Definition: tpl_dynBinHeap.H:273
T Item_Type
El tipo de elemento que retorna get_curr().
Definition: tpl_dynBinHeap.H:68
Node::Key_Type & KEY(Node *p) noexcept
Definition: tpl_binNode.H:318
Definition: tpl_dynBinHeap.H:55
void erase(T &data) noexcept
Sinónimo de remove.
Definition: tpl_dynBinHeap.H:253
void empty() noexcept
VacÃa todos los elementos del heap dinámico.
Definition: tpl_dynBinHeap.H:267
void update(Node *p) noexcept
Definition: tpl_binHeap.H:686
T & top() const
Definition: tpl_dynBinHeap.H:261
Node * getMin()
Definition: tpl_binHeap.H:663
Definition: tpl_binHeap.H:940
void remove_all_and_delete() noexcept
Definition: tpl_binHeap.H:730
Node * remove(Node *node)
Definition: tpl_binHeap.H:701
Definition: htlist.H:1323