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
TPriority
The type of the priority for each queue node.
TData
The 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
copyFrom
AlternativePriorityQueue<TPriority, TData>The AlternativePriorityQueue<TPriority, TData> to copy from.
Exceptions
- ArgumentNullException
copyFrom
is null.
AlternativePriorityQueue(IComparer<TPriority>)
Initializes a new instance of the AlternativePriorityQueue<TPriority, TData> class.
public AlternativePriorityQueue(IComparer<TPriority> priorityComparer)
Parameters
priorityComparer
IComparer<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
capacity
intThe initial queue capacity.
Exceptions
- ArgumentOutOfRangeException
capacity
is 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
capacity
intThe initial queue capacity.
priorityComparer
IComparer<TPriority>The IComparer<T> to use to compare priority values, or null to use the default comparer for the type.
Exceptions
- ArgumentOutOfRangeException
capacity
is 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
node
PriorityQueueNode<TPriority, TData>The node whose priority to change.
priority
TPriorityThe new priority for the node.
Exceptions
- ArgumentNullException
node
is 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
node
PriorityQueueNode<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
node
PriorityQueueNode<TPriority, TData>The node to add to the queue.
priority
TPriorityThe priority for the node.
Exceptions
- ArgumentNullException
node
is 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
node
PriorityQueueNode<TPriority, TData>The node to remove if present.
Returns
- bool
A value indicating whether the node was removed.