Class AlternativePriorityQueue<TPriority, TData>
- Namespace
- NetTopologySuite.Utilities
- Assembly
- NetTopologySuite.dll
An alternative implementation of the priority queue abstract data type. This allows us to do more than PriorityQueue<T>, which we got from JTS. Ultimately, this queue enables scenarios that have more favorable execution speed characteristics at the cost of less favorable memory and usability characteristics.
public sealed class AlternativePriorityQueue<TPriority, TData> : IEnumerable<PriorityQueueNode<TPriority, TData>>, IEnumerable
Type Parameters
TPriorityThe type of the priority for each queue node.
TDataThe type of data stored in the queue.
- Inheritance
-
AlternativePriorityQueue<TPriority, TData>
- Implements
-
IEnumerable<PriorityQueueNode<TPriority, TData>>
- Inherited Members
Remarks
When enumerating over the queue, note that the elements will not be in sorted order. To get at the elements in sorted order, use the copy constructor and repeatedly Dequeue() elements from it.
Constructors
AlternativePriorityQueue()
Initializes a new instance of the AlternativePriorityQueue<TPriority, TData> class.
public AlternativePriorityQueue()
AlternativePriorityQueue(AlternativePriorityQueue<TPriority, TData>)
Initializes a new instance of the AlternativePriorityQueue<TPriority, TData> class.
public AlternativePriorityQueue(AlternativePriorityQueue<TPriority, TData> copyFrom)
Parameters
copyFromAlternativePriorityQueue<TPriority, TData>The AlternativePriorityQueue<TPriority, TData> to copy from.
Exceptions
- ArgumentNullException
copyFromis null.
AlternativePriorityQueue(IComparer<TPriority>)
Initializes a new instance of the AlternativePriorityQueue<TPriority, TData> class.
public AlternativePriorityQueue(IComparer<TPriority> priorityComparer)
Parameters
priorityComparerIComparer<TPriority>The IComparer<T> to use to compare priority values, or null to use the default comparer for the type.
AlternativePriorityQueue(int)
Initializes a new instance of the AlternativePriorityQueue<TPriority, TData> class.
public AlternativePriorityQueue(int capacity)
Parameters
capacityintThe initial queue capacity.
Exceptions
- ArgumentOutOfRangeException
capacityis less than 1.
AlternativePriorityQueue(int, IComparer<TPriority>)
Initializes a new instance of the AlternativePriorityQueue<TPriority, TData> class.
public AlternativePriorityQueue(int capacity, IComparer<TPriority> priorityComparer)
Parameters
capacityintThe initial queue capacity.
priorityComparerIComparer<TPriority>The IComparer<T> to use to compare priority values, or null to use the default comparer for the type.
Exceptions
- ArgumentOutOfRangeException
capacityis less than 1.
Properties
Count
Gets the number of nodes currently stored in this queue.
public int Count { get; }
Property Value
Head
Gets the node at the head of the queue.
This is the node whose TPriority compares
less than or equal to the priority of all other nodes in the queue.
public PriorityQueueNode<TPriority, TData> Head { get; }
Property Value
- PriorityQueueNode<TPriority, TData>
Methods
ChangePriority(PriorityQueueNode<TPriority, TData>, TPriority)
Changes the priority of the given node.
public void ChangePriority(PriorityQueueNode<TPriority, TData> node, TPriority priority)
Parameters
nodePriorityQueueNode<TPriority, TData>The node whose priority to change.
priorityTPriorityThe new priority for the node.
Exceptions
- ArgumentNullException
nodeis null.
Clear()
Removes all nodes from this queue.
public void Clear()
Contains(PriorityQueueNode<TPriority, TData>)
Determines whether the given node is contained within this queue.
public bool Contains(PriorityQueueNode<TPriority, TData> node)
Parameters
nodePriorityQueueNode<TPriority, TData>The node to locate in the queue.
Returns
Dequeue()
Removes and returns the head of the queue.
public PriorityQueueNode<TPriority, TData> Dequeue()
Returns
- PriorityQueueNode<TPriority, TData>
The removed element.
Enqueue(PriorityQueueNode<TPriority, TData>, TPriority)
Adds a given node to the queue with the given priority.
public void Enqueue(PriorityQueueNode<TPriority, TData> node, TPriority priority)
Parameters
nodePriorityQueueNode<TPriority, TData>The node to add to the queue.
priorityTPriorityThe priority for the node.
Exceptions
- ArgumentNullException
nodeis null.
GetEnumerator()
public IEnumerator<PriorityQueueNode<TPriority, TData>> GetEnumerator()
Returns
- IEnumerator<PriorityQueueNode<TPriority, TData>>
Remove(PriorityQueueNode<TPriority, TData>)
Removes the given node from this queue if it is present.
public bool Remove(PriorityQueueNode<TPriority, TData> node)
Parameters
nodePriorityQueueNode<TPriority, TData>The node to remove if present.
Returns
- bool
A value indicating whether the node was removed.