18 #ifndef itkPriorityQueueContainer_h
19 #define itkPriorityQueueContainer_h
35 template <
typename TElement,
typename TElementIdentifier = IdentifierType>
68 template <
typename TElementWrapperPo
inter,
typename TElementIdentifier = IdentifierType>
103 template <
typename TElement,
typename TElementPriority =
double,
typename TElementIdentifier = IdentifierType>
105 :
public ElementWrapperInterface<MinPriorityQueueElementWrapper<TElement, TElementPriority, TElementIdentifier>,
133 ElementIdentifierType
155 template <
typename TElement,
typename TElementPriority =
double,
typename TElementIdentifier = IdentifierType>
189 template <
typename TElementWrapper,
190 typename TElementWrapperInterface,
191 typename TElementPriority = double,
211 template <
typename TInputIterator>
215 TInputIterator it = first;
235 Push(ElementWrapperType element);
237 const ElementWrapperType &
247 Update(
const ElementWrapperType & element);
253 DeleteElement(
const ElementWrapperType & element);
259 inline ElementWrapperType &
262 return this->operator[](identifier);
265 inline const ElementWrapperType &
268 return this->operator[](identifier);
274 this->operator[](identifier) = element;
275 m_Interface.SetLocation(element, identifier);
278 inline ElementIdentifierType
281 return ((identifier - 1) >> 1);
284 inline ElementIdentifierType
287 return ((identifier << 1) + 1);
290 inline ElementIdentifierType
293 return ((identifier << 1) + 2);
303 UpdateUpTree(
const ElementIdentifierType & identifier);
307 UpdateDownTree(
const ElementIdentifierType & identifier);
313 #include "itkPriorityQueueContainer.hxx"